我首先要说的是我现在热情地讨厌heroku。
好的,就可以了。我正在将应用程序推送到heroku,并且预先编译资产失败了#34;错误。我已经尝试了大约100件事来修复它,但没有任何作用。我试过设置
config.assets.initialize_on_precompile = false
在我的application.rb文件中,不起作用。我尝试过本地预编译,评论和推送,以及隐藏本地预编译资产。我也试过推进不同的环境。
这是我的错误日志,事情开始发生:
> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
SyntaxError: (erb):82: syntax error, unexpected ':', expecting ')'
(erb):85: unterminated string meets end of file
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/mongoid-4.0.0/lib/mongoid/config/environment.rb:40:in `load_yaml'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/mongoid-4.0.0/lib/mongoid/config.rb:83:in `load!'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/mongoid-4.0.0/lib/mongoid.rb:99:in `load!'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/mongoid-4.0.0/lib/mongoid/railtie.rb:75:in `block in <class:Railtie>'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/railties-4.1.6/lib/rails/initializable.rb:30:in `instance_exec'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/railties-4.1.6/lib/rails/initializable.rb:30:in `run'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/railties-4.1.6/lib/rails/initializable.rb:55:in `block in run_initializers'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/railties-4.1.6/lib/rails/initializable.rb:54:in `run_initializers'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/railties-4.1.6/lib/rails/application.rb:300:in `initialize!'
/tmp/build_1843337b33065f83ff572061af54f827/config/environment.rb:5:in `<top (required)>'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `block in require'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:232:in `load_dependency'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:247:in `require'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/railties-4.1.6/lib/rails/application.rb:276:in `require_environment!'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/railties-4.1.6/lib/rails/application.rb:389:in `block in run_tasks_blocks'
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/sprockets-rails-2.2.4/lib/sprockets/rails/task.rb:64:in `block (2 levels) in define'
Tasks: TOP => environment
我看到&#34;语法错误&#34;靠近顶部,但我不知道要查看哪个文件。 任何人都可以帮助我吗?
这是我的mongoid.yml文件的结尾,从第78行到第90行
78 staging:
79 sessions:
80 default:
81 database: <dbname>
82 hosts:
83 - <host>:<port>
84 username: <username>
85 password: <password>
86 options:
87 production:
88 sessions:
89 default:
90 uri: <%= ENV['MONGOHQ_URL'] %>
答案 0 :(得分:2)
stacktrace的前几行指出了你的问题:
Running: rake assets:precompile
rake aborted!
SyntaxError: (erb):82: syntax error, unexpected ':', expecting ')'
(erb):85: unterminated string meets end of file
/tmp/build_1843337b33065f83ff572061af54f827/vendor/bundle/ruby/2.1.0/gems/mongoid-4.0.0/lib/mongoid/config/environment.rb:40:in `load_yaml'
当Mongoid尝试加载其YAML配置mongoid.yml
时发生错误。
这与Heroku无关。堆栈跟踪中提到的mongoid.yml
行指向staging
部分,您应该能够在本地重现错误通过运行:
bundle exec rake assets:precompile RAILS_ENV=staging
顺便说一下,你还在运行Rails 3吗?因为according to Heroku:
在Rails 4.x中,此选项[
initialize_on_precompile
]已被删除,不再需要。
我的猜测是你需要引用包含冒号的字符串。它应该是:
78 staging:
79 sessions:
80 default:
81 database: <dbname>
82 hosts:
83 - '<host>:<port>'
84 username: <username>
85 password: <password>
86 options:
87 production:
88 sessions:
89 default:
90 uri: <%= ENV['MONGOHQ_URL'] %>
不是- <host>:<port>
(请注意上面的单引号。)