2016-03-17 4 views
1

У меня есть три задачи. Каждый из них работает на использовании heroku run rake challenges:"name of rake" --traceвсякий раз, когда самоцвет не работает автоматически?

Running rake challenges:challenge_accomplished --trace on livetochallenge... up, run.3478 
** Invoke challenges:challenge_accomplished (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute challenges:challenge_accomplished 
Anthony-Gallis-MacBook-Pro:livetochallenge galli01anthony$ heroku run rake challenges:challenge_clear_deadline --trace 
Running rake challenges:challenge_clear_deadline --trace on livetochallenge... up, run.2956 
** Invoke challenges:challenge_clear_deadline (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute challenges:challenge_clear_deadline 
Anthony-Gallis-MacBook-Pro:livetochallenge galli01anthony$ heroku run rake challenges:challenge_reminder --trace 
Running rake challenges:challenge_reminder --trace on livetochallenge... up, run.9671 
** Invoke challenges:challenge_reminder (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Execute challenges:challenge_reminder 
    Rendered user_mailer/challenge_reminder.html.erb within layouts/mailer (213.7ms) 

Но они не могут автоматически запускать на назначенный час. Как это может быть?

enter image description here

приложение/Библиотека/задачи/accomplished.rake

namespace :challenges do 
    desc 'Make completed habit challenges become past & accomplished' 
    task challenge_accomplished: :environment do 
    Challenge.all.each do |challenge| 
     if challenge.date_started != nil 
      if challenge.days_left_challenged <= 0 
      challenge.update_attributes(deadline: :date_started, accomplished: true, send_email: nil) 
      end 
     end 
    end 
    end 
end 

приложение/Lib/задач/clear_deadline.rake

namespace :challenges do 
    desc 'Removes :deadline from present habit challenges' 
    task challenge_clear_deadline: :environment do 
    Challenge.all.each do |challenge| 
     if challenge.date_started == Date.current 
      challenge.update_attributes(deadline: nil, accomplished: false) 
     end 
    end 
    end 
end 

приложение/Библиотека/задачи/reminder.rake

namespace :challenges do 
    desc 'Send email to users who want challenge reminder' 
    task challenge_reminder: :environment do 
    Challenge.all.each do |challenge| 
     if challenge.send_email[Date.current.wday] == Date::ABBR_DAYNAMES[Date.current.wday].downcase 
     UserMailer.challenge_reminder(challenge).deliver_now 
     end  
    end 
    end 
end 

Gemfile

gem 'whenever', :require => false 
+0

Вы не указали пространство имен в планировщике герою. также - для чего вы используете «когда-либо»? вам не нужно запускать задачи рейка, если вы используете планировщик героку (как вы, по-видимому,). – toddmetheny

ответ

4

это пространство имен:

namespace :challenges do 

запустить задачу, когда вы запускаете rake challenges:challenge_reminder (или любой другой), а не просто rake challenge_reminder, как вы могли бы, если вы hadn Поместите его в пространство имен. Вы также можете просто удалить пространство имен (это то, что я могу сделать). Если вы сохраните пространство имен, вам нужно будет настроить планировщик следующим образом: rake challenges:challenge_reminder

Для выполнения задач на планировщике герою вам не нужно whenever. Всякий раз, когда другое задание cron заменяет запланированную задачу рейка. То есть, если вы пытались запланировать работника или что-то вместо выполнения запланированной задачи рейка с помощью планировщика героя.

+0

Добро пожаловать. Рад, что это работает! – toddmetheny

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