2

今日は次々と問題になっています。実稼働サーバーにデプロイしてテストしましたが、メールに関係するものがあると問題が発生します。特にDeviseの確認可能な登録メールでは、アカウントにサインアップするたびに、次のエラーがログにスローされます...

ActionView::Template::Error (You can no longer call ActionMailer::Base.default_url_options directly. You need to set config.action_mailer.default_url_options. If you are using ActionMailer standalone, you need to include the routing url_helpers directly.):

config / environment / Production.rbを見ると、次のセットがあります...

config.action_mailer.default_url_options = { :host => 'localhost' } 

したがって、config.action_mailer.default_url_optionsが使用されていますが、完全に無視されています。ホストを「127.0.0.1」に変更し、サーバーのIPアドレスを変更しようとしましたが、変更できませんでした。config / application.rbにスローしましたが、実行できません。プロジェクトでdefault_url_optionsを宣言している他の行を探しましたが、これはproduction.rbファイルでのみ設定されています。私はグーグルで検索し、config.cache_classesをfalseに設定することを提案する投稿を見つけましたが、そこでも否定的です。

これがおかしなことです...プロジェクトで新しいコメントを送信しようとすると、同じエラーが発生します(初めてコメントする場合は、メールアドレスを確認するためにメールを送信するように設定します)。私はproduction.rbファイルからconfig.action_mailer...etcを取り出し、ビオラ-私のコメントメーラーは機能し、メールをうまく送信しました!

それでも、Deviseは絶対に頑固で、上記のエラーを私に投げ続けています。理由について何かアイデアはありますか?ところで、私の宝石はすべて最新です。以下は私のproduction.rbファイルです。

---更新---------------

少し進歩しましたが、これは奇妙なことです。サーバーを起動してメールを送信する何か(ユーザー登録、コメント)を実行しようとすると、上記のActionMailer::Baseエラーメッセージが表示されます。アクションをもう一度試してみると...それは機能し、メールが送信されます。その時点から(乗客および/またはサーバーが再起動されるまで)、すべてのメーラーアクションは正常に機能します。

しかし、まだ別の問題がないわけではありません(それは決して終わらない)...何らかの理由で、電子メールの本文は完全に空白です。

4

3 に答える 3

4

テストデータベースでテストしようとすると、この問題が再び発生することになりました。このエラーが発生した理由と、他の誰もこのエラーに遭遇していないように思われる理由を完全に理解することにしました(ごくわずかです)。 Googleからの結果)。

プロジェクトを完全に破棄して再構築した後、インストールしたSitemap-generatorプラグインの問題を最終的に特定しました。その痕跡をすべて削除すると、上記のエラーはようやくなくなりました。

于 2011-05-07T08:10:31.200 に答える
1

Fat Free CRMでこの問題に取り組んでいますが、このエラーはRails3の遅延読み込みクラスが原因で発生することに気付きました。環境/**。rbファイルのActionMailer::Baseクラスに「タッチ」するだけで、クラスがロードされます。次に、コントローラーなどからActionMailer :: Base.default_url_optionsを呼び出すことができます(これは、request.host_with_portからメーラーホストを自動的に設定できるようにするためです)。

したがって、私の環境ファイルは次のようになります。

FatFreeCRM::Application.configure do

  ...

  ActionMailer::Base
end
于 2011-07-19T08:12:12.983 に答える
0

私はこの問題を解決したと信じています...私はそれが何をしたのか「正確に」確信していませんが。コメントアウトしたconfig.cache_classes=trueであった可能性が非常に高く、これがサイトのキャッシュなどに影響するのではないかと心配していましたが、それが壊れたようには見えません。

さらに、:sendmailから:smtpに切り替えることで解決した空のメール本文。

これが私の最終的なproduction.rbファイルです。これが将来同様の問題を抱えている人に役立つことを願っています。

MyProject::Application.configure do

  # Commented out, causes 'ActionView::Template' error
  #config.cache_classes = true

  config.whiny_nils = true

  config.consider_all_requests_local = true

  config.action_view.debug_rjs = true

  config.action_controller.perform_caching = true

  config.cache_store = :mem_cache_store

  config.active_support.deprecation = :log

  config.action_dispatch.best_standards_support = :builtin

  config.action_mailer.raise_delivery_errors = true

  Sunspot.config.solr.url = 'http://127.0.0.1:8080/solr'

  Paperclip.options[:command_path] = "/usr/bin/"

  config.action_mailer.perform_deliveries = true

  config.action_mailer.delivery_method = :smtp

  ActionMailer::Base.smtp_settings = {
    :address => "smtp.gmail.com",
    :enable_starttls_auto => true,
    :port => 587,
    :authentication => :plain,
    :user_name => "user@domain.com",
    :password => 'password'
  }

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

  config.time_zone = "Central Time (US & Canada)"

end
于 2011-04-12T03:36:44.263 に答える