5

Ruby-on-Rails の実動サイトでのメールの構成についてアドバイスが必要です。

Rails アプリを EngineYard にデプロイします。demo.mydomain.comorのようなサイトをいくつか持っていstaging.mydomain.comます。Devise を構成して、展開時に確認メールがdemo.mydomain.comorからstaging.mydomain.com自動的に送信されるようにするにはどうすればよいですか? つまり、同じ GitHub コードベースが必要で、構成を動的に入力したいのです。

現在、config/environments/production.rb次の行があります:

config.action_mailer.default_url_options = { :host => 'demo.mydomain.com' }

しかし、staging.mydomain.com両方が実行されるため、同じコードがデプロイされている場合、それは正しくありませんRAILS_ENV=production

何か案は?

ありがとう、デイブ

更新:今のところ、実用的にするために、特定の環境を追加して、メーラー ドメインをハードコーディングしました。だから今、上でdemo.mydomain.com実行され、上environments/demo.rbwww.mydomain.com実行されenvironments/productions.rbます。これについて私が気に入らないのは、ファイル間の重複です。たとえばdatabase.yml

4

3 に答える 3

4

devise構成では、通常、deviseconfig/initializers/devise.rbのメール送信者を構成できます。この構成にはprocが必要であるため、実行時に何かを評価することができます。

Devise.setup do |config|
  config.mailer_sender = Proc.new { your_magic_here }
end
于 2012-01-30T18:13:48.640 に答える
1

理想的には、ステージング サーバーと運用サーバーは異なるレール環境で実行する必要があります。それでも、異なるアクション メーラー URL を使用してステージング サーバーと運用サーバーの両方で運用環境を実行したい場合は、展開レベルで実行する必要があります。デプロイ中はいつでも環境ファイルを書き込むことができます。

于 2012-01-30T20:20:54.450 に答える
1

まず、アプリケーションの環境を分離する必要があると思います。このガイドをチェックして、その方法を学んでください。

次に、デバイス構成で次のようなことを試してください。

Devise.setup do |config|
  if Rails.env.production?
    config.mailer_sender = "no-reply@domain.com"
  elsif Rails.env.staging?
    config.mailer_sender = "no-reply@staging.domain.com"
  else
    config.mailer_sender = "no-reply@domain.com"
  end
  ...

Proc オブジェクトの詳細については、このガイドを参照してください。

于 2013-10-19T18:49:56.653 に答える