我是Rails的新手,所以如果这很明显,请原谅我。
我正在进行大量的实验,创建应用程序,测试功能等。它使我的第一个脚手架应用程序运行良好,但我想创建第二个应用程序来测试不同的功能。
我在计算机上备份了文件夹级别,运行$ rails new taskmaster
(测试待办事项列表应用)。我为Task
模型运行了脚手架,通过$ rails server
启动了服务器,并尝试加载http://localhost:3000
。
但我收到路由错误,说它无法找到"members"
路由。但members
来自我的第一个Rails应用程序!我想通过在$ rails server
目录中解雇taskmaster
,它将启动该应用程序的服务器。
如何告诉Rails服务器提供哪个应用程序?
更新
我刚刚发现如果我:
$ rails server
启动rails服务器http://localhost:3000
它仍然会尝试使用members
路由,因为我通过git回滚而不再存在路由。
我猜这意味着我的/usr/local/
区域中与我的Ruby和Rails初始安装相关的内容正在维护此信息(我的应用程序在我家的目录中的Documents文件夹中设置)。
我认为Rails应用程序本质上是目录中的自包含应用程序 - 您只需要一个可用的Ruby安装来实现它们。 Rails服务器是否位于每个应用程序目录中,还是可以容纳所有应用程序的一些总体Rails服务器?
答案 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服务器中,这是我实现这一目标的方式:
通过这种方式,我可以为开发中的同一个应用程序模拟两个域答案 3 :(得分:4)
要启动rails服务器,请运行命令rails s
或rails 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