【问题标题】:How to detach JRuby on Rails如何在 Rails 上分离 JRuby
【发布时间】:2014-06-06 05:38:33
【问题描述】:

我使用 Ruby on Rails 创建了一个小型应用程序,最近将其转移到 JRuby。

我遇到的问题是之前在使用 MRI 时,我曾经使用 rails server -d 运行服务器以在后台运行它。

现在有了 JRuby,这个选项似乎不可用,我不能把它留在后台。

有没有办法做到这一点?我找到了一些关于如何使用像 spoon 这样的 gem 的线程,但是我找不到任何关于如何安装然后在我的应用程序上实现它的文档

另外,我找到的答案似乎有点过时了。

我想知道,是否有新的 gem 可以轻松安装/用于在后台运行 JRuby on Rails 应用程序?

任何指导将不胜感激。谢谢。

【问题讨论】:

  • 你至少可以使用另一个服务器,比如thin,来运行Rails。任何可以运行 Rack 应用程序的东西都应该可以工作。

标签: ruby-on-rails ruby jruby daemon jrubyonrails


【解决方案1】:

我不确定您使用的是什么操作系统,但在 linux/unix 上,您可以通过在其后放置“&”将任何命令置于后台。例如

rails server &

或者如果你让它运行一个 cntl-z 然后 bg 也应该把它放到后台。

【讨论】:

  • 我使用的是 Ubuntu 13.04。我尝试使用您给我的两种方法。在末尾添加“&”的第一种方法不起作用。使用命令时,它会在输入命令后运行该进程。它没有作为后台进程运行。使用 ctrl-z 停止了我的应用程序,而不是让它继续运行。
  • 您必须在 cntl-z 之后的命令行中键入 bg ... 但这与在命令末尾放置 & 并没有什么不同。是什么让您认为添加 & 只工作了片刻,您收到错误消息了吗? ...在命令提示符下键入作业,以查看该终端窗口的后台正在运行哪些作业...(顺便说一句,关闭终端将终止该作业)
  • 当我进入命令 rails 服务器时,我收到了这条消息:[1] 24109 应该是 PID。但是,几秒钟后,我的终端显示正在启动的过程: => 正在启动 WEBrick => Rails 3.2.12 应用程序开始在 0.0.0.0:3000 上开发 => 使用 -d 调用以分离 => Ctrl-C 以关闭服务器
  • 所以它在后台运行,如果你不想看到输出你可以使用 rails -s > /dev/null 2>&1 &
【解决方案2】:

在 Ubuntu 中它必须是 轨道 s -d &

-d 代表以分离模式运行。 & 是用于命令行分离的标准 UNIX。

【讨论】:

  • -d 命令不适用于 JRuby。你会得到这个错误: NotImplementedError: fork is not available on this platform 对于普通的 Ruby,这很好。但解决方案是添加“nohup”,这样所有输出文本都将存储在 rails app 文件夹中的文件中。
猜你喜欢
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
相关资源
最近更新 更多