3

我正在尝试将我的 rails 3.2.12 应用程序推送到配置有 postgres 数据库的 heroku。我第一次运行时git push heroku master收到以下错误。

Running: rake assets:precompile
rake aborted!
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?

经过一些故障排除后,我遇到了这篇文章并将以下行放入我的config/application.rb文件中:

config.assets.initialize_on_precompile = false

然后我跑去heroku run rake db:migrate开始填充heroku数据库并收到以下错误:

Running rake db:create attached to terminal... up, run.4115
rake aborted!
undefined local variable or method `config' for main:Object
/app/config/application.rb:5:in `<top (required)>'
/app/Rakefile:5:in `require'
/app/Rakefile:5:in `<top (required)>'

有趣的是,application.rb 的第 5 行是我添加的前一行:

config.assets.initialize_on_precompile = false

最后,我注意到我无法使用 application.rb 文件中的上述行在本地启动数据库 - 我收到以下错误:

config/application.rb:5:in `<top (required)>': undefined local variable or method `config' for main:Object (NameError)

这个问题似乎是一个问题 22。如何在不更改 application.rb 文件以及在本地服务器上运行它的情况下部署到 heroku?

4

2 回答 2

3

确保config.assets.initialize_on_precompile = false位于正确的位置,如下所示:

module YourApplicationName
  class Application < Rails::Application

    config.assets.initialize_on_precompile = false

确保重新启动一切。

此外,如果上述方法不起作用,临时解决方法是将您更改Gemfile为:

group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

然后运行bundle install --without production

Heroku 不建议使用不同的数据库进行开发和生产。但是,这将起作用,我已经多次使用它来轻松启动和运行

于 2013-05-19T01:10:44.053 回答
0

我尝试添加

config.assets.initialize_on_precompile = false

到“config/application.rb”并将我的项目上传到heroku,它上传没有任何错误并且它不工作,甚至rake命令也不能在heroku上工作。

我在 heroku 上的这篇文章中找到: https ://devcenter.heroku.com/articles/rails-4-asset-pipeline ,上面写着添加

config.serve_static_assets = true

到您的config/application.rb然后它工作正常。在我的计算机上使用“rake assets:precompile”进行测试时,它可以正确预编译。我的项目被正确上传并展示了一些很酷的东西。

于 2014-09-23T08:03:16.367 回答