У меня есть приложение Rails с демоном, который проверяет почтовый ящик на наличие новых сообщений. Я использую плагин Fetcher для этой задачи. Файл демона выглядит так:
#!/usr/bin/env ruby
require File.dirname(__FILE__) + '/../config/environment.rb'
class MailFetcherDaemon < Daemon::Base
@config = YAML.load_file("#{RAILS_ROOT}/config/mail.yml")
@config = @config['production'].to_options
@sleep_time = @config.delete(:sleep_time) || 20
def self.start
puts "Starting MailFetcherDaemon"
# Add your own receiver object below
@fetcher = Fetcher.create({:receiver => MailProcessor}.merge(@config))
...
Итак, я могу взять новые письма, проанализировать их и создать ресурс из проанализированных данных. Но когда он пытается сохранить ресурс, генерируется исключение. Это связано с тем, что сценарию автоматически назначается среда разработки. Поэтому он использует мою конфигурацию базы данных разработки вместо производственной среды (которая мне нужна).
Я попытался запустить скрипт с:
rails-root$ RAILS_ENV=production; script/mail_fetcher start
но безрезультатно. Кажется, что когда я загружаю файл environment.rb, он по умолчанию устанавливается в среду разработки и загружает development.rb и конфигурацию базы данных разработки из database.yml.
Мысли? Предложения?
Спасибо