Где я должен положить свои cronjobs в рельсы? - PullRequest
1 голос
/ 20 февраля 2012

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

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

$ 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 'для 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), так что это, вероятно, не то, что я хочу.

Любые идеи?

note.Я на рельсах 3

Ответы [ 2 ]

3 голосов
/ 20 февраля 2012

Я рекомендую вам использовать всякий раз, когда драгоценный камень . Это позволяет вам настроить задачи в файле schedule.rb следующим образом:

every 3.hours do
  runner "MyModel.some_process"       
  rake "my:rake:task"                 
  command "/usr/bin/my_great_command"
end
3 голосов
/ 20 февраля 2012

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

Переписать так:

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

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

.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...