运行Rails服务器的多个实例

时间:2011-02-08 01:23:49

标签: ruby-on-rails

我是Rails的新手,所以如果这很明显,请原谅我。

我正在进行大量的实验,创建应用程序,测试功能等。它使我的第一个脚手架应用程序运行良好,但我想创建第二个应用程序来测试不同的功能。

我在计算机上备份了文件夹级别,运行$ rails new taskmaster(测试待办事项列表应用)。我为Task模型运行了脚手架,通过$ rails server启动了服务器,并尝试加载http://localhost:3000

但我收到路由错误,说它无法找到"members"路由。但members来自我的第一个Rails应用程序!我想通过在$ rails server目录中解雇taskmaster,它将启动该应用程序的服务器。

如何告诉Rails服务器提供哪个应用程序?

更新

我刚刚发现如果我:

  1. 在创建成员脚手架之前,回滚到第一个 Rails应用的全新安装
  2. 通过应用程序根目录中的$ rails server启动rails服务器
  3. 检查http://localhost:3000
  4. 它仍然会尝试使用members路由,因为我通过git回滚而不再存在路由。

    我猜这意味着我的/usr/local/区域中与我的Ruby和Rails初始安装相关的内容正在维护此信息(我的应用程序在我家的目录中的Documents文件夹中设置)。

    我认为Rails应用程序本质上是目录中的自包含应用程序 - 您只需要一个可用的Ruby安装来实现它们。 Rails服务器是否位于每个应用程序目录中,还是可以容纳所有应用程序的一些总体Rails服务器?

7 个答案:

答案 0 :(得分:47)

我怀疑旧服务器仍在运行,新服务器无法启动。尝试先杀死它,然后启动它新的应用程序。

或者,您可以使用-p开关(例如rails server -p 3001

在其他端口上启动新服务器

答案 1 :(得分:10)

您无法真正告诉服务器要提供哪个应用程序,但您可以为每个应用程序运行服务器,并选择要加载的应用程序。如果要运行多个服务器,则必须在不同的端口上启动它们。默认端口为3000.要在端口3001上启动服务器,请在Rails 3上运行rails s -p 3001或在Rails 2上运行script/server -p 3001

答案 2 :(得分:5)

在Rails 5和Puma服务器中,这是我实现这一目标的方式:

使用两个终端,在每个终端中运行{{1}},指定不同的Pid文件和​​不同的端口: enter image description here

通过这种方式,我可以为开发中的同一个应用程序模拟两个域

答案 3 :(得分:4)

要启动rails服务器,请运行命令rails srails server 以下选项有效

-p Port
-b Binding (ip address)
-c Config file (for custom rack configuration)
-d Daemonize server
-u Enable debugger
-e Change the environment (defaults to development)
-P Specify a PID file

因此,要将实例运行到本地计算机中的不同端口,请使用以下命令

rails s -b 127.0.0.1 -p 8081 

请注意,您可以删除" 127.0.0.1" as" localhost"是默认主机。

有关详细信息,请查看此参考http://guides.rubyonrails.org/command_line.html#rails-server

答案 4 :(得分:2)

rails s -p 4000 --pid tmp/pids/server2.pid

以上命令将在端口4000中安全启动第二台服务器

答案 5 :(得分:1)

感谢您的帮助 - 事实证明这是一个相当奇怪的事情。不知何故,我的整个项目文件夹被复制到废纸篓中。当我启动服务器时,我在垃圾箱副本中启动服务器实例,而我回滚并编辑的副本保留在同一个地方。不知道是怎么发生的(也许它与git有关,我正在学习的另一种工具)。在任何情况下,感谢所有的帮助,对不起它是如此简单!

答案 6 :(得分:0)

在当前版本的Rails 5.2.0和Ruby 2.4.1p111中,可以使用多个PID启动同一应用程序的两个服务器实例。

$ rails s 
=> Booting Puma
=> Rails 5.2.0 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://0.0.0.0:3000
Use Ctrl-C to stop

现在,在不同端口上再启动一台服务器会出现pid问题。

$ rails s -p 3001
=> Booting Puma
=> Rails 5.2.0 application starting in development 
=> Run `rails server -h` for more startup options
A server is already running. Check /Users/biju/app1/tmp/pids/server.pid.
Exiting

以下启动服务器的方法可以使用多个应用程序实例。

$ rails s -p 3001 -P 321412
=> Booting Puma
=> Rails 5.2.0 application starting in development 
=> Run `rails server -h` for more startup options
Puma starting in single mode...
* Version 3.11.4 (ruby 2.4.1-p111), codename: Love Song
* Min threads: 5, max threads: 5
* Environment: development
* Listening on tcp://localhost:3001
Use Ctrl-C to stop