Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 一个项目有多个应用程序?_Ruby On Rails_Ruby On Rails 4_Cloud9 Ide - Fatal编程技术网

Ruby on rails 一个项目有多个应用程序?

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部分放置在

是否可以从一个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部分
放置在
app/controllers/API/posts\u controller.rb
中时。
并为其设置
route
,例如作为domain
myapp.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)?