无法分配请求的地址-为“ xyz.herokuapp.com”端口28159(Errno :: EADDRNOTAVAIL)绑定(2)

时间:2019-04-05 08:57:38

标签: ruby-on-rails heroku rubygems puma heroku-cli

我正在Heroku上载ROR应用程序,但出现此错误。

/app/vendor/bundle/ruby/2.4.0/gems/puma-3.12.1/lib/puma/binder.rb:273:in 'initialize':
Cannot assign requested address - bind(2) for "xyz.herokuapp.com" port 28159 (Errno::EADDRNOTAVAIL)

我附加了procfile和puma.rb代码。

Procfile

web: bundle exec puma -c config/puma.rb
release: bundle exec rake db:migrate

puma.rb

threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }
threads threads_count, threads_count
port        ENV.fetch("PORT") { 3000 }
environment ENV.fetch("RAILS_ENV") { "development" }

我也尝试了彪马3.7,但没有运气 procfile的配置也改变了

在本地可以正常工作,但可以在heroku上出错。

1 个答案:

答案 0 :(得分:1)

在Heroku上部署Rails 6.0时,我遇到了同样的问题。 我使用一个名为HOST的环境变量来向ActionDispatch::HostAuthorization中间件提供heroku服务器的url,因为rails要求提供它是为了防止DNS重新绑定和其他Host Header攻击。 当heroku服务器尝试启动服务器时,环境变量HOST的名称引起了副作用,讨论了该问题here,我使用的解决方案与here相同。

  1. heroku config:取消设置主机
  2. heroku config:set DOMAIN = youdomain.com
  3. 在production.rb内部而不是config.hosts << ENV['HOST']中使用config.hosts << ENV['DOMAIN']
  4. 在git上添加文件,在heroku上提交并部署

希望这会有所帮助。