Heroku/devise - リンク先のホストがありません。:host パラメータを指定するか、default_url_options[:host] を設定してください。質問する

Heroku/devise - リンク先のホストがありません。:host パラメータを指定するか、default_url_options[:host] を設定してください。質問する

私は自分のアプリを Heroku にプッシュしようとしています。まだ開発中です。confirmable モジュールを備えた Device を使用しています。

Heroku コンソールでユーザーを追加しようとすると、次のエラーが発生しました:

Missing host to link to! Please provide :host parameter or set default_url_options[:host]

テスト環境と開発環境に次の行があります:

環境/開発.rb および環境/テスト.rb

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

実稼働環境では何も設定していません。

私は押してみた

config.action_mailer.default_url_options = { :host => 'mywebsitename.com' }
config.action_mailer.default_url_options = { :host => 'heroku.mywebsitename.com' }

しかし、それも機能しません。

Web 上では、ActionMailer に関連している可能性があると確認しましたが、何を設定すればよいかわかりません。ご意見をありがとうございます。

編集済み:

こんにちは、

Heroku にプッシュしたときにアプリがクラッシュしないように、env/test.rb と env/dev.rb にこれを配置しました (env.rb には配置していません。これは Rails 3 アプリだからだと思います)

config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }

しかし、Heroku コンソールでユーザーを作成しようとすると、次のようになりました。

User.create(:username => "test", :email => "[email protected]", :password => "test1234", :password_confirmation => "test1234", :confirmed_at => "2010-11-03 14:11:15.520128")

私が受け取ったエラーは次のとおりです:

ActionView::Template::Error: Missing host to link to! Please provide :host parameter or set default_url_options[:host]
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:473:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/url_for.rb:132:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_view/helpers/url_helper.rb:99:in `url_for'
/home/slugs/.../mnt/.bundle/gems/ruby/1.8/gems/actionpack-3.0.0/lib/action_dispatch/routing/route_set.rb:195:in `user_confirmation_url'

編集済み (2)

コンソールで heroku logs と入力すると、次のメッセージが表示されます ==> production.log <== したがって、heroku にデプロイすると、すでに本番環境になっていると考えられます。

env/prod.rb を次のように設定します。

config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }

ユーザーを作成しようとすると、次のエラーが発生します。

Errno::EAFNOSUPPORT: Address family not supported by protocol - socket(2)
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `initialize'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `open'
/usr/ruby1.8.7/lib/ruby/1.8/net/smtp.rb:551:in `do_start'
/usr/ruby1.8.7/lib/ruby/1.8/timeout.rb:62:in `timeout'

ベストアンサー1

これをあなたのenvironment.rb

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

必ずhost本番環境の URL に変更し、開発用に localhost のままにしておいてください。これはメーラー用で、確認などの通知を送信するにはデフォルトのメールが必要です。


heroku logsコンソールからHeroku サーバーのログをチェックして、正確なエラーを確認してください。

environment.rbheroku にプッシュするときは、heroku サブドメインでファイルを設定する必要があります。

config.action_mailer.default_url_options = { :host => 'yourapp.heroku.com' }

production.rbバージョンによっては、ではなくに入る必要がありますenvironment.rb

おすすめ記事