2015-07-15 6 views
0

Мне нужно запустить повторяющиеся задания в рельсах 4.2 приложения. Я устанавливаю всякий раз, когда драгоценный камень.Как запускать повторяющийся ActiveJob с каждым драгоценным камнем

создать 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 я добавить

every 10.minutes do 
    runner "Analytics::CalculateAllJob" 
end 

команду запуска при каждом -i. Он написать изменения в CRONTAB бегает хроны команды из командной строки:

/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/[email protected]/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in `<top (required)>': uninitialized constant Analytics::CalculateAllJob (NameError) 
from /home/www/.rvm/gems/[email protected]/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in `eval' 
from /home/www/.rvm/gems/[email protected]/gems/railties-4.2.0/lib/rails/commands/runner.rb:62:in `<top (required)>' 
from /home/www/.rvm/gems/[email protected]/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:123:in `require_command!' 
from /home/www/.rvm/gems/[email protected]/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:90:in `runner' 
from /home/www/.rvm/gems/[email protected]/gems/railties-4.2.0/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
from /home/www/.rvm/gems/[email protected]/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>' 

Что делать я неправильно?

ответ

0

Решено. Моя ошибка разворачивает вызов имени класса.

Рабочий код:

приложение/работа/аналитика/calculate_all.rb

class Analytics::CalculateAll < ActiveJob::Base 
    def perform(*args) 
    ... 
    end 
end 

конфигурации/shedule.rb

every 10.minutes do 
    runner "Analytics::CalculateAll.perform_later" 
end