我想把我的应用推到heroku上.我还在德夫.

当我try 使用heroku控制台添加用户时,我遇到了以下错误:

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

在测试和开发环境中,我有以下几行代码:

environments/development.rb and environments/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' }

但它也不起作用..

我在网上看到它可能与ActionMailer有关,但我不知道需要配置什么.

EDITED:

你好

为了不让我的应用程序在我推heroku时崩溃,我把它放在了我的环境/测试中.rb和我的env/dev.rb(不在env.rb中,我认为这是因为它是rails 3应用程序)

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

但当我试图在heroku控制台中创建用户时:

User.create(:username => "test", :email => "test@test.com", :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时,我得到了这个==>生产日志(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,并将其保留为本地主机以供开发.这是给邮寄者的,它需要一封默认的邮箱来发送确认等通知...


您应该判断heroku服务器heroku logs上的日志(log),从控制台运行该服务器,它会告诉您确切的错误.

当您推送到heroku时,需要使用heroku子域配置environment.rb文件:

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

根据版本的不同,这应该是production.rb,而不是environment.rb.

Ruby-on-rails相关问答推荐

如何将POST-CSSS-IMPORT与TRANWIND-RACKS和IMPORT映射一起使用

Django模型在关系更新时更新相关对象

搜查升级到 4.0.0 和 ActionText::RichText

您如何测试方法调用块内调用的方法,以及使用 rspec 在块内传递给该方法调用的内容

正确更新其他列的更新列

插件和 Ruby gem 之间的区别?

在 Rails 3 中,如何在路由中使用锚点作为 ID?

未初始化的常量 ActionDispatch::Session::EncryptedCookieStore (NameError)

jQuery ajax 请求不会触发 Rails 控制器的 JS 响应?

如何在 Ruby on Rails 中的 cookie 上设置 HttpOnly 标志

Rails:设计:按角色登录后重定向

Rails - 使用 %W

Rails 4网站图标问题

Rails:如何在表单的必填字段上禁用星号?

Ruby gem 命名约定

Rails:立即渲染并退出

活动管理员:仅自定义新表单

Ruby on Rails:Cucumber:我如何获取单个功能?

未捕获的 ReferenceError:未定义 ReactDOM

是否可以输出rake db:migrate产生的 SQL 更改脚本?