铁轨中的cronjobs有特殊的地方吗?我找不到关于这个主题的信息,唯一的例子就是执行Model.some_method
我创建了一个类Crawler,运行了一个方法,并为它尝试了不同的地方(包括app / models),但我一直收到这个错误:
$ rails runner -e development'Crawler.run'
/usr/local/lib/ruby/gems/1.8/gems/railties-3.2.1/lib/rails/commands/runner.rb:53:未定义的方法`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
如您所见,它找不到方法'run'。
如果我把它放在/ scripts中我得到这个:uninitialized constant Crawler(NameError),所以这可能不是我想要的。
有什么想法吗?
请注意。我在轨道上3
答案 0 :(得分:3)
您正在课堂级别调用实例方法。
像这样改写:
class Crawler
def self.run
puts 'bla'
end
end
要回答您的初始问题,没有真正专门的地方,但我通常会在crons
下创建一个app
文件夹。
关于rake任务,他们应该住在/lib
,但这完全取决于你。
答案 1 :(得分:3)
我鼓励您使用whenever gem。它允许您在schedule.rb
文件中设置任务,如下所示:
every 3.hours do
runner "MyModel.some_process"
rake "my:rake:task"
command "/usr/bin/my_great_command"
end