【问题标题】:delayed_job gem won't start in production (Rails 4)delay_job gem 不会在生产中开始(Rails 4)
【发布时间】:2013-11-09 14:03:42
【问题描述】:

在生产环境中启动 delay_job 时遇到问题。使用 rake jobs:work 命令在开发中一切正常,但在使用 Capistrano 部署到我的服务器后,经过数小时的失败尝试,我无法弄清楚如何让 DJ 运行。

正如delayed_job 的github 存储库中所说,我确保我捆绑了“守护进程”gem,并且还尝试使用命令“bin/delayed_job start”而不是“script/delayed_job start”来启动它,因为我在 Rails 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

【问题讨论】:

  • 可以吗,您的 Gemfile 中有仅用于 :development 和 :test 的 capistrano gem?
  • @Leger,是的,开发 Capistrano 是可以的,这是一个很好的答案,可以进一步阐明该主题:stackoverflow.com/a/15661804/2922050
  • 我必须做几件事才能让它为自己工作。你能 ssh 到服务器并再次 rake 数据库吗,运行RAILS_ENV=production bundle exec rake db:migrate。每隔一段时间,我在部署时不会为我个人运行新的迁移,因此这是必要的。还要发布delayed_job.log 文件,在这里找到application_name/log/delayed_job.log 你能验证远程服务器上是否存在bin/delayed_job 文件吗?

标签: ruby-on-rails-4 capistrano delayed-job


【解决方案1】:

确保 bin/delayed_job 中的第一行指向一个有效的 Ruby 可执行文件。您只使用了ruby,这可能无法解决。当您 cd 进入 rails_root 目录时,rvm 正在添加 ruby​​ 的完整路径,但是在执行脚本时不会发生这种情况。一个稍微麻烦的解决方案是 cd 进入目录,执行which ruby 并将其写入 bin/delayed_job,例如:#!<path_to_ruby>。无需致电/usr/bin/env,因为 Capistrano 已经在这样做了。

【讨论】:

    猜你喜欢
    • 2013-11-26
    • 2017-02-06
    • 2013-05-15
    • 2013-03-24
    • 1970-01-01
    • 2012-07-08
    • 2015-07-30
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多