Ruby on rails 一个项目有多个应用程序?
是否可以从一个Cloud9IDE项目内部运行多个rails应用程序?例如,我有以下结构 MyApp(C9项目)Ruby on rails 一个项目有多个应用程序?,ruby-on-rails,ruby-on-rails-4,cloud9-ide,Ruby On Rails,Ruby On Rails 4,Cloud9 Ide,是否可以从一个Cloud9IDE项目内部运行多个rails应用程序?例如,我有以下结构 MyApp(C9项目) MyApp API(Rails/Grape) MyApp Web(Rails) 当我通过C9中的终端在相应的应用程序目录(即MyApp API、MyApp Web)中运行rails服务器-p$PORT-b$IP时,它们似乎都在运行。然而,当我执行cURL请求或尝试直接浏览时,我无法达到预期的路由 我假设这是因为我使用相同的端口/ip配置运行rails服务器。仅当您将API部分放置在
- MyApp API(Rails/Grape)
- MyApp Web(Rails)
rails服务器-p$PORT-b$IP时,它们似乎都在运行。然而,当我执行cURL请求或尝试直接浏览时,我无法达到预期的路由
我假设这是因为我使用相同的端口/ip配置运行rails服务器。仅当您将API部分
放置在app/controllers/API/posts\u controller.rb
中时。
并为其设置route
,例如作为domainmyapp.com/api/posts.json
或subdomain(api.myapp.com/posts.json)看起来无法完成。C9显然只暴露一个端口。我很可能需要将这些应用程序分成不同的项目
从技术上讲,我可以在不同的本地端口上运行API应用程序,例如:
rails server -p 15001 -b $IP
然后我可以通过cURL请求连接到它,或者让web应用程序通过该端点连接到它
curl -X GET http://localhost:15001
这有点痛苦,但至少有一个解决办法。Cloud9(尚未)将多个端口公开给外部。一种可行的方法是在你的应用程序前面放置一个小型的反向代理。您可以在任意端口上运行不同的应用程序,并让代理在$PORT
上侦听。然后将代理配置为转发到您的应用,例如基于路径。这将使两个应用成为一个应用。我想把它们分开。然后你应该为每个应用程序运行2个单独的web服务器进程(unicorn、puma等),并配置nginx(apache)来处理应用程序流的url请求。我的问题更多地涉及如何使用Cloud9 IDE实现这一点。我相信,如果C9提供备用调试端口,我的配置可以在不需要另一层(如unicorn、puma等)的情况下实现。嗨,我们还没有提供多个暴露端口。我的建议是使用ssh服务器。请记住,建议的子域解决方案在C9中不起作用。每个工作区只有1个子域可用。路由仍然是一个很好的选择。谢谢,我最终决定将应用程序分为两个独立的项目。你能详细解释一下吗?我面临着与Jason相同的问题,我不确定如何安装/配置ngix以代理不同端口上的api请求(ex 15001)?