我知道还有一些与此问题相关的问题,但我还没有找到答案。
我正在使用 Rails 4.1.4 构建应用。我使用 MongoDB 作为我的数据库, Mongoid 4.0.0 作为ODM。
当我将我的应用推送到 Heroku 时,运行 rake资产:预编译时构建失败,因为 Rails 尝试连接到生产数据库,此时未初始化,默认连接到开发数据库,这在生产中不存在。这是我得到的错误:
为Rails资产管道准备应用 正在运行:rake assets:预编译 耙子流产了! Mongo :: ConnectionFailure:无法连接到localhost:27017上的主节点 /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/mongo-1.10.2/lib/mongo/mongo_client.rb:422:in
connect' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/mongo-1.10.2/lib/mongo/mongo_client.rb:661:in
设定” /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/mongo-1.10.2/lib/mongo/mongo_client.rb:177:ininitialize' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/mongo_mapper-0.13.0/lib/mongo_mapper/connection.rb:88:in
新的” /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/mongo_mapper-0.13.0/lib/mongo_mapper/connection.rb:88:inconnect' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/mongo_mapper-0.13.0/lib/mongo_mapper/connection.rb:98:in
设定” /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/mongo_mapper-0.13.0/lib/mongo_mapper/railtie.rb:48:inblock in <class:Railtie>' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/initializable.rb:30:in
instance_exec” /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/initializable.rb:30:in run_initializers中的run' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/initializable.rb:55:in
阻止 /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/initializable.rb:54:inrun_initializers' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/application.rb:300:in
初始化!” /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/config/environment.rb:5:in<top (required)>' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/application.rb:276:in
需要” /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/application.rb:276:in run_tasks_blocks中的require_environment!' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/railties-4.1.4/lib/rails/application.rb:379:in
阻止' /tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vendor/bundle/ruby/2.0.0/gems/sprockets-rails-2.1.4/lib/sprockets/rails/task.rb:64:in `block(2级)in define' 任务:TOP =&gt;环境 (通过使用--trace运行任务查看完整跟踪)! !预编译资产失败。 !!推送拒绝,无法编译Ruby应用程序
有谁知道解决这个问题?如何在生产环境中预编译资产时告诉 Rails 不连接数据库?
提前感谢您的帮助!
最佳,
答案 0 :(得分:0)
您可能希望尝试启用实验室功能,以便在预编译中使用该环境:
heroku labs:enable user-env-compile
其他seem to be having success在类似情况下这样做。
答案 1 :(得分:0)
问题已解决。 Rails 4.1.4 对我所陈述的内容没有任何问题。我做错了什么,我的不好!。
此致