gpt4 book ai didi

ruby-on-rails - 如何使用 bluepill 守护 Rails 脚本

转载 作者:数据小太阳 更新时间:2023-10-29 07:24:54 27 4
gpt4 key购买 nike

我一直使用 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 能够很好地做到这两点。

我是否遗漏了一些明显的东西?

最佳答案

Signal code 0 to kill 查询以确定守护进程是否接受信号。 Bluepill 源代码显示在生成后经常执行此操作以检查守护进程是否正常运行。

由于该进程不再存在,因此 ruby​​ 很可能在加载环境时快要死了。

你没有展示你的剧本。我猜它从命令行运行正常但无法守护进程。一个可能的解释是您的 shell 环境中有一些东西在 Bluepill 进程中缺失。另一种可能性是访问您的交互式 shell 拥有的资源,但 headless 守护进程没有。

这是一个猜测:对于您提供的require,我相信必须设置RAILS_ENV 环境变量。你在这样做吗?参见示例 this note .也许最好使用引导脚本加载。参见 for example the Rails initialization description .

关于ruby-on-rails - 如何使用 bluepill 守护 Rails 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18860985/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com