我有一个带有守护程序的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文件时,它只是默认使用开发环境并从database.yml加载development.rb和开发数据库配置。
思考?建议?
由于
答案 0 :(得分:3)
这在我的应用程序中有效,我看到的唯一区别是没有分号
RAILS_ENV=production script/mail_fetcher start
答案 1 :(得分:1)
所以当你说
时RAILS_ENV=production; script/mail_fetcher start
你是说吗?
#!/bin/bash
export RAILS_ENV=production
cd /path/to/rails_root
./script/mail_fetcher start
答案 2 :(得分:0)
您可以尝试将此添加到您的脚本中:
ENV['RAILS_ENV'] = "production"
或者,可以将它添加到命令行。
#!/bin/bash
cd /path/to/rails_root
./script/mail_fetcher start RAILS_ENV=production