我需要在rails 4.2应用程序中运行循环作业。只要是gem我就会安装。
我创建了ActiveJob
class Analytics::CalculateAllJob < ActiveJob::Base
queue_as :default
def perform(*args)
orgs = Org.all
orgs.each do |org|
org.departments
Rails.logger.info "Scheduled a job to calculate Analytics"
end
end
end和shedule.rb中的cron作业我添加了
every 10.minutes do
runner "Analytics::CalculateAllJob"
end每当-i时运行命令。他将更改写入crontab,然后从命令行运行cron命令:
/bin/bash -l -c 'cd /home/www/myproject && bin/rails runner -e development '\''Analytics::CalculateAllJob'\'' >> /home/www/myproject/log/cron.log 2>&1'并获取
/home/www/.rvm/gems/ruby-2.2.0@rails420/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in `<top (required)>': uninitialized constant Analytics::CalculateAllJob (NameError)
from /home/www/.rvm/gems/ruby-2.2.0@rails420/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in `eval'
from /home/www/.rvm/gems/ruby-2.2.0@rails420/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in `<top (required)>'
from /home/www/.rvm/gems/ruby-2.2.0@rails420/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:123:in `require_command!'
from /home/www/.rvm/gems/ruby-2.2.0@rails420/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:90:in `runner'
from /home/www/.rvm/gems/ruby-2.2.0@rails420/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /home/www/.rvm/gems/ruby-2.2.0@rails420/gems/railties-4.2.0/lib/rails/commands.rb:17:in `<top (required)>'
from /home/www/myproject/bin/rails:8:in `<top (required)>'
from /home/www/.rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from /home/www/.rvm/rubies/ruby-2.2.0/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
from -e:1:in `<main>'我做错了什么?
发布于 2015-07-16 07:43:38
解决了。我的错误是写类名调用。
工作代码:
app/job/analytics/calculate_all.rb
class Analytics::CalculateAll < ActiveJob::Base
def perform(*args)
...
end
endconfig/shedule.rb
every 10.minutes do
runner "Analytics::CalculateAll.perform_later"
end发布于 2020-12-08 12:32:32
您应该在调用perform之前创建一个job实例。
every 10.minutes do
runner "Analytics::CalculateAll.new.perform_later"
endhttps://stackoverflow.com/questions/31425329
复制相似问题