我正在努力让延迟工作在 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"
我在delayed_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 delay_job
通过在启动程序/停止程序行中添加 rvm -S。但它仍然失败并出现错误:找不到 rvm 命令
我的 rvm 目录位于我的主目录 /home/me/.rvm
我试图在(sudo 更改 PATH - 为什么?)中找到解决方法,通过添加来更改 PATH 环境变量
/usr/bin/env PATH=/home/me/.rvm/bin:$PATH
命令“sudo monit start delay_job”成功了!工人开始了。但问题是:当我启动 sudo /etc/init.d/monit start 并且当我查看系统日志时,我仍然得到'delayed_job' failed to start
所以我不知道如何进行更多调查,如何为monit获取更详细的错误。