加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何使用bluepill对Rails脚本进行Daemonize

发布时间:2020-12-17 03:48:19 所属栏目:百科 来源:网络整理
导读:我总是成功地使用bluepill来守护简单的 Ruby脚本.但是这一次,我有一个脚本,它也加载了一个Rails环境,所以我可以访问Rails应用程序及其各自模型的数据库连接.我使用的bluepill配置与我通常做的没什么不同: Bluepill.application("myapp",:foreground = true,
我总是成功地使用bluepill来守护简单的 Ruby脚本.但是这一次,我有一个脚本,它也加载了一个Rails环境,所以我可以访问Rails应用程序及其各自模型的数据库连接.我使用的bluepill配置与我通常做的没什么不同:

Bluepill.application("myapp",:foreground => true,:log_file => "/tmp/bluepill.log") do |app|
          app.process("myapp_process") do |process|
            process.start_command = "/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby /media/apps/myapp/current/lib/async/myscript.rb"
            process.pid_file = "/media/apps/myapp/current/tmp/pids/myscript.pid"
            process.daemonize = true
            process.stdout = "/var/log/myapp/media.log"
            process.stderr = "/var/log/myapp/media_error.log"
            process.working_dir = "/tmp"
            process.stop_command = "kill -QUIT {{PID}}"
            process.start_grace_time = 15.seconds
          end
    end

主要问题是这个错误:

Failed to signal process 16096 with code 0: No such process

如果我没有使用这个加载Rails环境:

require File.expand_path("/media/apps/myapp/current/config/environment")

这将与我的一堆其他脚本一样工作.但这是我第一次尝试守护加载Rails环境的脚本.我知道我可以使用ruby gem Daemons来实现这个功能,但是这并没有进行监控,而且bluepill能够做得非常好.

我错过了一些明显的东西吗?

解决方法

信号代码0用于终止查询以确定守护程序是否接受信号. Bluepill源显示这是在产生后经常完成的,以检查守护进程是否活着并且运行良好.

由于该过程不再存在,因此在加载环境时,ruby很可能会死亡.

你没有显示你的脚本.我猜它从命令行运行正常但是没有守护进程.一个可能的解释是,你的shell环境中有一些东西在Bluepill进程中缺失了.另一种可能性是访问交互式shell具有的资源,但无头守护程序进程没有.

这是一个猜测:对于你给予工作的要求,我相信必须设置RAILS_ENV环境变量.你在做吗?请参阅例如this note.也许最好使用启动脚本加载.见for example the Rails initialization description.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读