尽管遵循指南,Heroku版本未设置

时间:2016-10-30 18:26:14

标签: ruby-on-rails ruby heroku

我正在尝试将rails 5应用程序推送到Heroku,我相信我按照Heroku页面上的说明操作: https://devcenter.heroku.com/articles/ruby-versions

$ ruby --version
ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu]

$ cat Gemfile
.....
ruby "2.3.1"

$ heroku run bash
$ env | grep PATH
PATH=/app/bin:/usr/local/bin:/usr/bin:/bin

$ git push heroku master
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.2.4

以错误终止:

remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        rake aborted!
remote:        NoMethodError: undefined method `symbolize_keys' for #       <String:0x007fac0655feb0>
remote:           /tmp/build_39bfaebc9acd5a6bcb91a69f2b13c171/vendor/bundle/ruby/2.2.0/gems /railties-5.0.0.1/lib/rails/application.rb:393:in `secrets'

我猜这是因为它使用的是2.2而不是2.3。

/ bin中的版本是1.9.3,所以如果找不到,它应该使用1.9.3而不是2.2.4。

上面的错误信息是在spickermann的帮助下修复的。从git tracking中删除secret.yml文件允许部署应用程序而不会出错。

但是,错误的Ruby版本仍然存在,Heroku甚至会在最后发出警告:

remote: ###### WARNING:
remote:        You have not declared a Ruby version in your Gemfile.
remote:        To set your Ruby version add this line to your Gemfile:
remote:        ruby '2.2.4'
remote:        # See https://devcenter.heroku.com/articles/ruby-     versions for more information.

关于还能做些什么的任何建议?

谢谢!

1 个答案:

答案 0 :(得分:0)

您的部署失败,因为config/secret.yml未达到预期格式。它期望在生产环境中使用这样的嵌套哈希:

production:
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>

您的config/secrets.yml会返回密钥production的字符串。因此,部署失败,您无法部署新版本。