В Rails, как запускать скрипты, загружающие среду рельсов?
У меня есть некоторые сценарии, которые мне нужно запустить, чтобы получить доступ к полной среде из моего приложения rails.
Я знаю, что раньше использовал script/runner
в Rails 2.3.
Но я также использовал "delay_job", который загружает среду рельсов (2.3):
#!/usr/bin/env ruby
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
script Теперь я работаю, вытаскивая данные из очереди сообщений, а затем хочу, чтобы она использовала активную запись и мои модели для вставки этих данных в базу данных протоколирования (которая может быть или не быть такой же, как DB, который использует остальная часть приложения.
Ответы
Ответ 1
Из вашего script вам потребуется файл config/environment.rb
в вашем приложении. Обратите внимание, что это именно то, что здесь делает DJ. Это верно и в Rails 3.
Обратите внимание, что если вы превратите свой script в задачу Rake (которую вы можете вставить в Rakefile
или в свой собственный *.rake
файл в lib/tasks
), вы можете просто зависеть от своей задачи от Rails- заданная задача environment
.
task :mytask => :environment do
# custom stuff
end