如何停止(和重新启动)Rails服务器?

33
我正在按照这里的说明http://railsinstaller.org/mac在运行OS X 10.8.2的Mac上启动Rails。 在第8步中,我被要求重新启动Rails服务器,但如何操作呢? 我假设是通过命令行,在已经打开的ruby终端窗口中进行还是新建一个呢?
7个回答

46

现在在 Rails 5 中,您可以这样做:

rails restart
rails --tasks的输出结果为:

通过触摸tmp/restart.txt文件重新启动应用程序

我认为如果你将Rails作为服务运行,这个命令会非常有用。

11
特别是在使用Docker时。 - dosuken123
rails -v = 5.2.0,但是 rails restart 却给了我一个 rails new 的使用菜单?他们已经移除了这个命令吗? - Elliot Tregoning
在 GitHub 上的 Rails 源代码中没有任何新更改,您可以查看:https://github.com/rails/rails/blob/master/railties/lib/rails/tasks/restart.rake - Daniel Antonio Nuñez Carhuayo

40

按下 Ctrl+C

当您启动服务器时,它会在启动文本中提到此事。


好的,完成了 - 要重新启动,请在打开的窗口中输入 rails server 或启动一个新窗口? - Paul Seattle
非常好,谢谢。我将在几分钟内显示已回答。 - Paul Seattle

28
在OSX上,您可以利用类似UNIX的命令行-以下是我在我的.bashrc中保持的内容,使我能够更轻松地重新启动在后台(-d)模式下运行的服务器(请注意,在运行此操作时,必须在Rails根目录中)。
alias restart_rails='kill -9 `cat tmp/pids/server.pid`; rails server -d'

@zane关于PID文件未被删除的评论,我的初始反应是它可能与Rails版本或操作系统类型有关。然而,也有可能是shell运行第二个命令(rails server -d)比kill实际引起前一个正在运行的实例停止更快。

因此,另一种解决方案是,kill -9 cat tmp/pids/server.pid && rails server -d 可能更加健壮;或者您可以明确运行 kill,等待 tmp/pids 文件夹清空,然后重新启动新服务器。


2
使用kill -9命令会在我的系统上留下pid文件,这意味着再次启动服务器将导致“服务器已经运行”错误(并且服务器将无法重新启动)。使用不带“-9”的kill命令,这将删除pid文件。 - Zane
@Zane - 你可能需要说一些关于你的Rails和OS版本的事情。在OSX 10.8上,使用Rails 4+,由于kill -9(又称为SIGKILL)导致的“孤立的”PID文件不会导致输出“服务器已经运行”的消息。 - sameers
sameers: 很好的观点,有趣的是行为不同。操作系统:Linux manjaro 3.16.7.4-1-MANJARO Rails: 4.2.0。 - Zane
当服务器重新启动时,我会遇到“Broken pipe (Errno::EPIPE)”错误。 - Qwertie
@Qwertie 你需要说得更详细一些 - 我无法在Rails5.2.2和OSX Mojave上重现。 - sameers
我在 Fedora 29 上进行测试,可能会有不同的结果。 - Qwertie

0

0

如果您无法找到要终止的Rails进程,那么它可能实际上并未运行。请从运行Rails服务器的位置删除tmp文件夹及其子文件夹,然后重试。


-1

-2

我刚刚使用

Ctrl + c

重启了服务器,这对我起作用了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接