我正在尝试将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.
关于还能做些什么的任何建议?
谢谢!
答案 0 :(得分:0)
您的部署失败,因为config/secret.yml
未达到预期格式。它期望在生产环境中使用这样的嵌套哈希:
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
您的config/secrets.yml
会返回密钥production
的字符串。因此,部署失败,您无法部署新版本。