1. ホーム
  2. ruby-on-rails

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

2022-04-15 08:46:31

質問

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

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

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

をテスト環境と開発環境で使用する場合、次のような行があります。

環境/development.rb と環境/test.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 に以下のように記述しました (rails3アプリなので env.rb には記述しない)。

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'

EDITED (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'

解決方法は?

を追加する必要があります。 environment.rb

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

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


herokuサーバーのログを確認する必要があります。 heroku logs をコンソールから実行すれば、正確なエラーを教えてくれるでしょう。

heroku にプッシュする際に environment.rb ファイルを heroku のサブドメインで作成します。

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


バージョンによっては、次のようになります。 production.rb ではなく environment.rb .