我的 Rails 教程(第 7 章)使用 puma 的 Heroku 部署不断崩溃
My Rails Tutorial (Chapter 7) Heroku deployment with puma keeps crashing
这是我在这里的第一个问题,所以我希望我遵守规则。
我刚刚完成了 Michale Hartl Rails 教程的第 7 章。我的 sample_app 在本地工作,并且一直在 Heroku 上工作,直到现在。
本章末尾有一节称为“7.5 专业级部署”。这会将生产环境切换到 SSL 和 Puma 网络服务器。
以下代码显示了我在本节中所做的更改,这些更改导致该应用无法在 Heroku 上运行。
config/environments/production.rb - 取消注释此行以启用 SSL
config.force_ssl = true
Gemfile - 添加了 Puma
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
gem 'puma', '2.11.1'
end
config/puma.rb - 我从 Rails 教程 pdf 复制失败后直接从 Heroku 站点复制了这个
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
创建了 Procfile
web: bundle exec puma -C config/puma.rb
提交后,推送到 Heroku 并迁移数据库,我得到一个页面显示 "Application error."
这是 heroku 日志的输出:
2015-05-14T11:55:46.257652+00:00 heroku[web.1]: Starting process with command `bundle exec puma -C config/puma.rb`
2015-05-14T11:55:48.438024+00:00 app[web.1]: ... ^
2015-05-14T11:55:48.438026+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/configuration.rb:179:in `_load_from'
2015-05-14T11:55:48.438029+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/configuration.rb:40:in `load'
2015-05-14T11:55:48.438035+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/bin/puma:10:in `<top (required)>'
2015-05-14T11:55:48.438034+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/cli.rb:453:in `run'
2015-05-14T11:55:48.438017+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/configuration.rb:179:in `instance_eval': config/puma.rb:1: syntax error, unexpected tIDENTIFIER, expecting end-of-input (SyntaxError)
2015-05-14T11:55:48.438040+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/bin/puma:23:in `<main>'
2015-05-14T11:55:48.438031+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/cli.rb:308:in `parse_options'
2015-05-14T11:55:48.438039+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/bin/puma:23:in `load'
2015-05-14T11:55:48.437914+00:00 app[web.1]: config/puma.rb:1: warning: encountered \r in middle of line, treated as a mere space
threads_count = Integer(ENV['MAX_THREADS']......NCURRENCY'] || 2)
2015-05-14T11:55:49.211862+00:00 heroku[web.1]: Process exited with status 1
2015-05-14T11:55:49.223366+00:00 heroku[web.1]: State changed from starting to crashed
我从 "syntax error" 得到的印象是我的 config/puma.rb 文件有问题,但我不知道是什么。
我尝试指定 Ruby 版本号,但这没有帮助。
这有什么问题,我该如何纠正?
Prakash Murthy 几乎为我回答了这个问题 - 谢谢。
起初我尝试重新输入 puma.rb 的内容 - 它没有用。
然后我决定尝试完全删除 puma.rb,然后在新文件中从头开始输入。奇怪的是,它奏效了!
我的文本编辑器是 Atom。希望这种事不要再发生了。
遇到了完全相同的问题并为此花费了一些严重的时间。
文件 config/puma.rb 中有重复代码 不知何故代码被添加到文件底部。
我完全按照 bitbucket 存储库中的代码复制了代码。
另外,我了解到在复制代码时最好 select raw 以防止多余的空格或复制错误。
这是我在这里的第一个问题,所以我希望我遵守规则。
我刚刚完成了 Michale Hartl Rails 教程的第 7 章。我的 sample_app 在本地工作,并且一直在 Heroku 上工作,直到现在。
本章末尾有一节称为“7.5 专业级部署”。这会将生产环境切换到 SSL 和 Puma 网络服务器。
以下代码显示了我在本节中所做的更改,这些更改导致该应用无法在 Heroku 上运行。
config/environments/production.rb - 取消注释此行以启用 SSL
config.force_ssl = true
Gemfile - 添加了 Puma
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
gem 'puma', '2.11.1'
end
config/puma.rb - 我从 Rails 教程 pdf 复制失败后直接从 Heroku 站点复制了这个
workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count
preload_app!
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
on_worker_boot do
# Worker specific setup for Rails 4.1+
# See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
ActiveRecord::Base.establish_connection
end
创建了 Procfile
web: bundle exec puma -C config/puma.rb
提交后,推送到 Heroku 并迁移数据库,我得到一个页面显示 "Application error."
这是 heroku 日志的输出:
2015-05-14T11:55:46.257652+00:00 heroku[web.1]: Starting process with command `bundle exec puma -C config/puma.rb`
2015-05-14T11:55:48.438024+00:00 app[web.1]: ... ^
2015-05-14T11:55:48.438026+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/configuration.rb:179:in `_load_from'
2015-05-14T11:55:48.438029+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/configuration.rb:40:in `load'
2015-05-14T11:55:48.438035+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/bin/puma:10:in `<top (required)>'
2015-05-14T11:55:48.438034+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/cli.rb:453:in `run'
2015-05-14T11:55:48.438017+00:00 app[web.1]: /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/configuration.rb:179:in `instance_eval': config/puma.rb:1: syntax error, unexpected tIDENTIFIER, expecting end-of-input (SyntaxError)
2015-05-14T11:55:48.438040+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/bin/puma:23:in `<main>'
2015-05-14T11:55:48.438031+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/gems/puma-2.11.1/lib/puma/cli.rb:308:in `parse_options'
2015-05-14T11:55:48.438039+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.2.0/bin/puma:23:in `load'
2015-05-14T11:55:48.437914+00:00 app[web.1]: config/puma.rb:1: warning: encountered \r in middle of line, treated as a mere space
threads_count = Integer(ENV['MAX_THREADS']......NCURRENCY'] || 2)
2015-05-14T11:55:49.211862+00:00 heroku[web.1]: Process exited with status 1
2015-05-14T11:55:49.223366+00:00 heroku[web.1]: State changed from starting to crashed
我从 "syntax error" 得到的印象是我的 config/puma.rb 文件有问题,但我不知道是什么。
我尝试指定 Ruby 版本号,但这没有帮助。
这有什么问题,我该如何纠正?
Prakash Murthy 几乎为我回答了这个问题 - 谢谢。
起初我尝试重新输入 puma.rb 的内容 - 它没有用。
然后我决定尝试完全删除 puma.rb,然后在新文件中从头开始输入。奇怪的是,它奏效了!
我的文本编辑器是 Atom。希望这种事不要再发生了。
遇到了完全相同的问题并为此花费了一些严重的时间。 文件 config/puma.rb 中有重复代码 不知何故代码被添加到文件底部。
我完全按照 bitbucket 存储库中的代码复制了代码。 另外,我了解到在复制代码时最好 select raw 以防止多余的空格或复制错误。