1

メールボックスの新しいメールをチェックするデーモンを備えた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 からロードされるようです。

考え?提案?

ありがとう

4

3 に答える 3

3

これは私のアプリで機能しています。唯一の違いはセミコロンがないことです

RAILS_ENV=production script/mail_fetcher start
于 2009-10-14T02:08:25.587 に答える
1

だからあなたが言うとき

RAILS_ENV=production; script/mail_fetcher start

どういう意味ですか

#!/bin/bash
export RAILS_ENV=production
cd /path/to/rails_root
./script/mail_fetcher start
于 2009-03-18T22:58:26.320 に答える