2

「いつでも」が機能しない理由がわかりません

スケジュール.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」で実行しているプロジェクトで試してみましたが、何が間違っていますか?

4

2 に答える 2

4

推測ですが...開発または本番でテストしていますか?.

開発中の場合は、忘れずに schedule.rb に追加してください:

set :environment, 'development'

また、これを行うことができます:

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

よろしくイワン

于 2011-03-30T19:17:27.473 に答える
0
'cd /home/ruben/Monitoring && script/rails runner -e production '\''Ping.check_pings'\'''

この文字列の文字エスケープは正しくないと思います。作品を見てproduction '\''、最初'に文字列を閉じてから、'文字列を開かずに a をエスケープしています。これを試して:

'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'

(単一のシェルワードを引用符で囲む必要はないかもしれません。:)

于 2011-03-08T12:00:20.163 に答える