2012-02-19 4 views
1

Есть ли специальное место для кронов в рельсах? Я не мог найти информацию по этому вопросу, единственные примеры для выполнения Model.some_methodГде я должен положить свои кроны в рельсы?

Я создал класс Crawler с запуском метода и попробовал разные места для него (включая приложение/модели), но Я получаю эту ошибку:

$ 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 

Как вы можете видеть, он не может найти метод «Выполнить».

Если я положил его внутри/скрипты, я получаю это: uninitialized constant Crawler (NameError), поэтому это, вероятно, не то, что я хочу.

Любые идеи?

примечание. Я на рельсах 3

ответ

3

Вы вызываете метод экземпляра на уровне класса.

Rewrite, как это:

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

Чтобы ответить на ваш первый вопрос, нет никакого реального выделенного места, но я обычно создаю папку crons под app.

Что касается задач рейка, они должны жить в /lib, но это действительно зависит от вас.

+0

Oops. Спасибо, что сработало (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

Я очень обескураживаю это, если вы не запускаете машину с одной версией рубина и одним глобальным gemset. Что-нибудь еще (rvm, rbenv и т. Д.) И планируйте потратить от 6 до 12 часов, пытаясь запустить свою первую простую задачу. Затем нажмите на свою производственную машину и начните все сначала. Где бы ни было ужасно. – JosephK

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