我在生产环境中启动delayed_job时遇到问题。只需使用rake jobs:work命令就可以正常开发,但是在使用Capistrano部署到我的服务器之后,以及之后几小时的失败尝试,我无法弄清楚如何让DJ运行。
正如它在针对delayed_job的github存储库上所做的那样,我确保捆绑了“守护进程”gem,并且还尝试使用命令“bin / delayed_job start”而不是“script / delayed_job start”启动它我在轨道上4.我还运行了所需的生成器“rails generate delayed_job”,它确实在我的项目的bin目录中生成了这个文件:
#!/usr/bin/env ruby
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize
我一直得到的错误是-bash: bin/delayed_job: No such file or directory
我认为可能是因为我正在使用rvm。
至于我的gemfile,我已经包含了delayed_job_active_record和守护进程。在这一点上,我完全被难以接受并且没有探索的链接。
source 'https://rubygems.org'
ruby '2.0.0'
gem 'rails', '4.0.0'
# Rails defaults
gem 'sass-rails', '~> 4.0.0'
gem 'bundler'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
# learn-rails
gem 'anjlab-bootstrap-rails', :require => 'bootstrap-rails', :github => 'anjlab/bootstrap-rails'
gem 'figaro'
gem 'gibbon'
gem 'high_voltage'
gem 'simple_form', '>= 3.0.0.rc'
gem 'delayed_job_active_record', '~> 4.0.0'
group :development, :test do
gem 'sqlite3'
gem 'better_errors'
gem 'quiet_assets'
gem 'capistrano', '~> 2.15.5'
gem 'rvm-capistrano'
gem 'rspec-rails'
end
group :test do
gem "factory_girl_rails", "~> 4.0"
gem 'capybara'
gem 'poltergeist'
gem "faker", "~> 1.2.0"
end
group :production do
gem 'unicorn'
gem 'pg'
gem 'daemons'
end
答案 0 :(得分:0)
确保bin / delayed_job中的第一行指向有效的Ruby可执行文件。您只使用ruby
,可能无法解决。当你进入rails_root目录时,rvm正在添加ruby的完整路径,但是在执行脚本时不会发生这种情况。一个有点hacky的解决方案是进入目录,执行which ruby
并将其写入bin / delayed_job,例如:#!<path_to_ruby>
。无需致电/usr/bin/env
,因为Capistrano已经这样做了。