当推送到Heroku时,Rails 4.1.4尝试连接到未初始化的Mongo数据库(rake资产:预编译)

时间:2014-09-12 14:30:29

标签: ruby-on-rails ruby mongodb heroku mongoid

我知道还有一些与此问题相关的问题,但我还没有找到答案。

我正在使用 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:in     initialize' /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:in     connect' /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:in     block 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:in     run_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 不连接数据库?

提前感谢您的帮助!

最佳,

2 个答案:

答案 0 :(得分:0)

您可能希望尝试启用实验室功能,以便在预编译中使用该环境:

heroku labs:enable user-env-compile

其他seem to be having success在类似情况下这样做。

答案 1 :(得分:0)

问题已解决 Rails 4.1.4 对我所陈述的内容没有任何问题。我做错了什么,我的不好!。

此致