views:

723

answers:

3

Hello! I have a Rails application with a daemon that checks a mailbox for any new emails. I am using the Fetcher plugin for this task. The daemon file looks like this:

#!/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))
  ...

So I have it grab the new emails, parse them and create a resource from the parsed data. But when it tries to save the resource an exception is thrown. This is because the script is automatically assigned the development environment. So it is using my development database configuration instead of the production environment (which is the config that I want).

I have tried starting the script with:

 rails-root$ RAILS_ENV=production; script/mail_fetcher start

but to no avail. It seems like when I load the environment.rb file it just defaults to the development environment and loads development.rb and the development database configuration from database.yml.

Thoughts? Suggestions?

Thanks

+1  A: 

So when you say

RAILS_ENV=production; script/mail_fetcher start

do you mean

#!/bin/bash
export RAILS_ENV=production
cd /path/to/rails_root
./script/mail_fetcher start
Pete
Yeah that's the command I was doing but I had it in shorthand. I updated the question to indicate where I was running the command from.
vrish88
A: 

You might try adding this to your script:

ENV['RAILS_ENV'] = "production"

Alternatively, it might work to add it to the command line.

#!/bin/bash
cd /path/to/rails_root
./script/mail_fetcher start RAILS_ENV=production
Sarah Mei
I tried that but I need the environment to be set to 'production' as the environment.rb file is loaded this way it will load the production configuration (the settings for the database, mailier, logger, etc)
vrish88
A: 

This is working in my app, the only difference I see is no semi-colon

RAILS_ENV=production script/mail_fetcher start
chap