Rails cron всякий раз, когда - PullRequest
2 голосов
/ 08 марта 2011

Я не понимаю, почему "всякий раз" не работает

Schedule.rb

every 2.minutes do
  runner "Ping.check_pings"
end

Ping.rb

class Ping < ActiveRecord::Base
    attr_accessible :LAN, :WAN, :info, :infastructure_id

    def self.check_pings      
      @monitor_ping = Ping.new()    
      @monitor_ping.WAN = "true"
      @monitor_ping.save 
    end
end

crontab -l

0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58 * * * * /bin/bash -l -c 'cd /home/ruben/Monitoring && script/rails runner -e production '\''Ping.check_pings'\'''

rails runner "Ping.check_pings" ==> Работает в командной строке

Я попробовал его с моим проектом, запущенным в "rails s" и без Что я делаю не так?

Ответы [ 2 ]

4 голосов
/ 30 марта 2011

Я просто догадываюсь, но ... Вы тестируете разработку или производство?.

Если вы в разработке, не забудьте включить в свой график. Rb:

set :environment, 'development'

Также вы можете сделать это:

every 10.minutes do
  runner "User.vote", environment => "development"
end

С уважением Иван

0 голосов
/ 08 марта 2011
'cd /home/ruben/Monitoring && script/rails runner -e production '\''Ping.check_pings'\'''

Я думаю, что экранирование символа некорректно в этой строке;посмотрите на кусок production '\'', первый ' закрывает строку, затем вы избегаете ' без открытой строки.Попробуйте это:

'cd /home/ruben/Monitoring && script/rails runner -e production \'Ping.check_pings\''

или это:

"cd /home/ruben/Monitoring && script/rails runner -e production 'Ping.check_pings'"

или это:

'cd /home/ruben/Monitoring && script/rails runner -e production Ping.check_pings'

(вам может не понадобиться кавычки вокруг одного слова-оболочки вообще.:)

...