Rails 4.1.4在推送到Heroku时尝试连接到未初始化的Mongo数据库(rake assets:precomp



我知道还有一些其他问题与这个问题有关,但我还没有找到答案。

我正在用Rails 4.1.4构建一个应用程序。我使用MongoDB作为我的数据库,使用Mongoid 4.0.0为ODM。

当我将我的应用程序推送到Heroku时,运行rake-assets:precompile会导致构建失败,因为Rails尝试连接到生产数据库(此时尚未初始化),并默认连接到生产中不存在的开发数据库。这是我得到的错误:

为Rails资产管道准备应用程序运行:rake资源:预编译rake中止!Mongo::ConnectionFailure:未能连接到localhost:27017上的主节点/tmp/build_f8b818f9-3058-4ea1-807e-158e2964efcd/vender/bundle/ruby/2.0.0/gems/mongo1.10.2/lib/mongo/mongo_client.rb:422:inconnect' /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/vender/bundle/ruby/2.0.0/gems/mongo1.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/vender/bundle/ruby/2.0.0/gems/mongo_mapper-0.113.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/vender/bundle/ruby/2.0.0/gems/mongo_mapper-0.113.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-ea1-807e-158e2964efcd/vender/bundle/ruby/2.0.0/gems/railties--4.1.4/lib/rails/initializable.rb:30:inrun_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-ea1-807e-158e2964efcd/vender/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-ea1-807e-158e2964efcd/vender/bundle/ruby/2.0.0/gems/railties--4.1.4/lib/rails/application.rb:276:inrun_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-ea1-807e-158e2964efcd/vender/bundle/ruby/2.0.0/gems/sprockets-rails-2.1.4/lib/sprockets/rails/task.rb:64:in`define中的块(2个级别)任务:TOP=>环境(通过使用--trace运行任务来查看完整跟踪)!预编译资产失败!

推送被拒绝,无法编译Ruby应用

有人知道这个问题的解决方法吗?。如何告诉Rails在生产环境中预编译资产时不要连接到数据库?。

提前感谢您的帮助!。

最佳,

您可能需要尝试启用实验室功能,以便在预编译时提供可用的环境:

heroku labs:enable user-env-compile

其他人似乎在类似的情况下也成功地做到了这一点。

问题已解决 Rails 4.1.4对我所说的没有任何问题。我做错了什么,我的错!。

问候,

最新更新