gpt4 book ai didi

ruby-on-rails-3 - 使用ubuntu在monit下运行delayed_job

转载 作者:行者123 更新时间:2023-12-04 06:16:12 25 4
gpt4 key购买 nike

我正在努力让 delay_job 在 rails 3.0.9(ruby 1.9.2)下工作。我成功运行的唯一方法是手动录制命令 rake jobs:work。
但我希望在 rails 应用程序启动时自动启动。

我已经在 ubuntu 下安装了 monit 并将其配置为启动位于我的应用程序中的文件。这失败看起来像:

check process delayed_job with pidfile /home/me/myapp/tmp/pids/delayed_job.pid
start program = "/home/me/myapp/script/delayed_job start"
stop program = "/home/me/myapp/script/delayed_job stop"

我在 delay_job 脚本文件中添加了环境设置:
#!/usr/bin/env ruby

ENV['RAILS_ENV'] = "development"
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize

当我运行命令“sudo monit start delay_job”时,出现以下错误:
/usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- bundler/setup (LoadError)

所以我猜是因为 sudo 使用了错误版本的 ruby​​ 环境
然后我尝试了以下解决方案:
rvm monit delayed_job

通过在启动程序/停止程序行中添加 rvm -S 。
但它仍然失败并显示错误:找不到 rvm 命令

我的 rvm 目录位于我的主目录/home/me/.rvm

我试图在 ( sudo changes PATH - why? ) 中找到解决方法,通过添加来更改 PATH 环境变量
/usr/bin/env PATH=/home/me/.rvm/bin:$PATH

命令“sudo monit start delay_job”成功!然后 worker 开始了。
但问题是:当我启动 sudo/etc/init.d/monit start 并且查看系统日志时,我仍然得到 'delayed_job' 启动失败

所以我不知道如何进行更多调查,如何获得更详细的 monit 错误。

最佳答案

我终于成功解决了这个问题。
我像这样修改了monit文件:

check process delayed_job with pidfile /home/me/myapp/tmp/pids/delayed_job.pid
start program = "/bin/su - me -c 'cd /home/me/myapp/; script/delayed_job start'"
stop program = "/bin/su - me -c 'cd /home/me/myapp/; script/delayed_job stop'"

我还降级了守护进程 gem,因为最新版本似乎存在问题。所以我现在正在使用 守护进程 v 1.0.10

我还修改了日志文件/home/me/myapp/log/delayed_job.log 的权限,因为它似乎是在我的 root 之前创建的,我的用户无法访问它(我在测试命令“脚本时遇到了问题”/delayed_job 开始”与“我”用户)

关于ruby-on-rails-3 - 使用ubuntu在monit下运行delayed_job,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209943/

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