[英]Unable to deploy via capistrano using whenever gem
我正在嘗試使用Capistraino部署Ruby on Rails應用程序。 我有一份計划為使用everyever的工作,但是嘗試部署時總是出現錯誤。
SSHKit::Runner::ExecuteError: Exception while executing as deploy@staging.company.com: bundle exit status: 1
bundle stdout: Nothing written
bundle stderr: config/schedule.rb:2:in `block in initialize': uninitialized constant Whenever::JobList::Delayed (NameError)
from /home/deploy/app/company/shared/bundle/ruby/2.1.0/gems/whenever-0.9.4/lib/whenever/job_list.rb:44:in `every'
from config/schedule.rb:1:in `initialize'
# delayed-job
set :delayed_job_workers, 2
set :delayed_job_prefix, :drnow
set :delayed_job_roles, [:app, :background]
# whenever
set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" }
set :whenever_command, 'bundle exec whenever'
set :whenever_environment, defer { stage }
如果我將deploy.rb更改為
# whenever
set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" }
set :whenever_command, 'bundle exec whenever'
set :whenever_environment, ->{ fetch :rails_env, fetch(:stage, "production") }
我得到這個錯誤
DEBUG [e84fec09] Command: bundle exec whenever
DEBUG [e84fec09] Could not locate Gemfile or .bundle/ directory
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as deploy@company.com: bundle exec whenever exit status: 10
bundle exec whenever stdout: Could not locate Gemfile or .bundle/ directory
bundle exec whenever stderr: Nothing written
SSHKit::Command::Failed: bundle exec whenever exit status: 10
bundle exec whenever stdout: Could not locate Gemfile or .bundle/ directory
bundle exec whenever stderr: Nothing written
Tasks: TOP => whenever:update_crontab
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as deploy@company.com: bundle exec whenever exit status: 10
bundle exec whenever stdout: Could not locate Gemfile or .bundle/ directory
bundle exec whenever stderr: Nothing written
# Load DSL and set up stages
require 'capistrano/setup'
# Include default deployment tasks
require 'capistrano/deploy'
require 'capistrano/rails'
require 'capistrano/rvm'
require 'capistrano/faster_assets'
require 'capistrano/delayed-job'
require 'whenever/capistrano'
# Load custom tasks from `lib/capistrano/tasks' if you have any defined
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
unless ENV['RAILS_ENV'] == 'test'
every 30.minutes do
Delayed::Job.enqueue(UpdateScoresJob.new(Article.published.all.pluck(:id)), priority: 1, run_at: 1.minute.from_now)
end
end
似乎正在抱怨無法找到常量Delayed::Job
。 根據此github問題 ,完整的Rails環境未加載到您的schedule.rb文件中。 您可能希望將“延遲工作”隊列放入跑步者中,如下所示:
unless ENV['RAILS_ENV'] == 'test'
every 30.minutes do
runner 'Delayed::Job.enqueue(UpdateScoresJob.new(Article.published.all.pluck(:id)), priority: 1, run_at: 1.minute.from_now)'
end
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.