2013-07-18 2 views
1

Я использую Sidekiq и Clockwork для фоновых заданий и планирования. Мой lib/clock.rb имеет следующий код для выполнения некоторой задачи грабли:Clockwork and register_javascript_expansion exception

require 'clockwork' 
require File.expand_path('../../config/boot',  __FILE__) 
require File.expand_path('../../config/environment', __FILE__) 
require 'sidekiq' 

include Clockwork 
include Sidekiq 

module Clockwork  
    every(1.day, 'rake places:get_from_api', at: '22:45') do 
    Sidekiq.logger.info 'Starting rake places:get_from_api' 
    execute_rake('places.rake', 'places:get_from_api') if Rails.env.production? 
    end 
end 

def execute_rake(file,task) 
    require 'rake' 
    rake = Rake::Application.new 
    Rake.application = rake 
    Rake::Task.define_task(:environment) 
    load "#{Rails.root}/lib/tasks/#{file}" 
    rake[task].invoke 
end 

Я разворачивать приложение на EngineYard и иметь after_restart.rb крюк:

if environment == 'production' 
    cw_pid_file = "#{shared_path}/pids/clockwork.pid" 
    # stop clockwork 
    run "if [ -d #{current_path} ] && [ -f #{cw_pid_file} ]; then cd #{current_path} && kill -int $(cat #{cw_pid_file}) 2>/dev/null; else echo 'clockwork was not running' ; fi" 
    ## start clockwork 
    run "cd #{current_path} && bundle exec clockworkd -C#{current_path}/lib/clock.rb --pid-dir #{shared_path}/pids --log --log-dir #{shared_path}/log restart >> log/clockwork.log 2>&1 &" 
    run "ps -eo pid,command | grep clockwork | grep -v grep | awk '{print $1}' > #{cw_pid_file}" 
end 

После развертывания я вижу an exception в clockworkd.clock.output журнале.

Как установить его?

ответ

1

Двор двигателя здесь.

Рассматривая вашу ошибку, вы пытаетесь вызвать любое утверждение на Нил. Вероятно, в вашей пользовательской задаче грабли. Мы не можем отлаживать его, не видя больше вашего кода.

Также я могу порекомендовать простые задачи Cron как лучший способ запуска обычных задач на моторном дворе вместо использования часов.

  1. В нижней части среды нажмите на Crontabs (фото http://d.pr/i/3Yeo)
  2. Добавить работу, давая имя задания, команды, например, для запуска задачи рейка: cd /data/APP_NAME/current && RAILS_ENV=production /usr/local/bin/bundle exec rake task_name
  3. Дайте пользователю и временному интервалу и нажмите кнопку «Создать».
  4. Назад на вашу среду нажмите Применить.

Если вы хотите более рубиновый метод создания задач хрон в рельсах, есть хороший камень называется Whenever, который позволяет писать задачи хрон в рубин, но они будут записаны на кронтаб. A Google, когда всякий раз, когда на Engine Yard возвращается несколько сообщений о том, как другие люди пошли на это, но для того, чтобы сделать что-то так же просто, как вы показали, мои приведенные выше инструкции, вероятно, были бы самыми легкими.

+0

Спасибо за ваш ответ. Я знаю об этой функции, но я хочу найти какое-то решение без crontab :) – akrisanov

+0

Есть ли какая-то особая причина, по которой вы не хотите использовать cron? – roryhughes

+0

У меня нет особой причины. Просто хочу получить опыт с чистым рубиновым решением. – akrisanov

 Смежные вопросы

  • Нет связанных вопросов^_^