2012-02-19 4 views
1

cronjobsのレールに特別な場所はありますか?この件に関する情報を見つけることができませんでした。Model.some_methodを実行する唯一の例があります。クロノスをどこに置くべきですか?

メソッドを実行してクラスクローラを作成し、別の場所(アプリ/モデルを含む)を試しましたが、私はこのエラーを取得しておいてください。

$ rails runner -e development 'Crawler.run'

/usr/local/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/commands/runner.rb:53: undefined method `run' for Crawler:Class (NoMethodError)

from /usr/local/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/commands.rb:64:in `eval' 
from /usr/local/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/commands/runner.rb:53 
from /usr/local/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/commands.rb:64:in `require' 
from /usr/local/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/commands.rb:64 
from script/rails:6:in `require' 
from script/rails:6 
class Crawler 
    def run 
    puts 'bla' 
    end 
end 

あなたが見ることができるように、それはメソッド「実行」を見つけることができません。

これを/ scriptsに入れると、初期化されていない定数Crawler(NameError)が発生します。これはおそらく私が望むものではありません。

アイデア?

メモ。私はレール上にあります3

答えて

3

あなたはクラスレベルでインスタンスメソッドを呼び出しています。このような

書き換え:あなたの最初の質問に答えるために

class Crawler 
    def self.run 
    puts 'bla' 
    end 
end 

は、本当の専用の場所がありませんが、私は通常appcronsフォルダを作成します。

レーキタスクに関しては、/libに住んでいるはずですが、それは本当にあなた次第です。

+0

おっと。ありがとう、それは働いた(受け入れるには3分) – HappyDeveloper

3

whenever gemを使用することをおすすめします。それは次のようにschedule.rbファイル内のタスクを設定することができます:

every 3.hours do 
    runner "MyModel.some_process"  
    rake "my:rake:task"     
    command "/usr/bin/my_great_command" 
end 
+0

wow thanks #### – HappyDeveloper

+0

これは、1つのバージョンのrubyと1つのグローバルgemsetを持つマシンで実行しない限り、これを避けることができます。それ以上のもの(rvm、rbenvなど)は、最初の簡単なタスクを実行するために6〜12時間を費やす予定です。その後、プロダクションマシンにプッシュし、すべてを開始します。どこがひどいですか。 – JosephK

関連する問題