未能推送到Heroku

3
我试图将配置了Postgres数据库的Rails 3.2.12应用程序推送到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文件的第五行正是我添加的上一行代码:
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)

这个问题似乎是一个进退两难的局面。我如何在不修改application.rb文件的情况下部署到Heroku,并在本地服务器上运行它?


你确定你把 config.assets.initialize_on_precompile = false 添加到了正确的位置吗?你可以通过将这行代码移到 application.rb 文件中任何 conf.<anything> 之后来确认。 - mohamagdy
这是在 require File.expand_path('../boot', __FILE__)require 'rails/all' 之后。 - Anconia
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不建议在开发和生产中使用不同的数据库。但是,这样做也可以,我已经多次使用它来轻松启动。


谢谢!原来它在错误的位置。但是,当我将它移动到正确的位置(并且在 class Application Rails::Application 的最后)时,运行 git push heroku master 时出现以下错误:rake aborted! /tmp/build_11aq1x9l9kxod/app/assets/stylesheets/application.css has already been required - 然而,应用程序现在在我的本地服务器上运行。值得注意的是,我也安装了 Twitter Bootstrap。 - Anconia
很好,我很高兴至少能帮你朝着正确的方向开始。乐意帮忙。 - fontno

0

我尝试添加

config.assets.initialize_on_precompile = false

我在"config/application.rb"中进行了更改并上传了我的项目到heroku,它顺利上传且没有任何错误提示,但是它却无法正常工作,即使在heroku上执行rake命令也没有效果。

我在heroku的文章中找到了以下内容: https://devcenter.heroku.com/articles/rails-4-asset-pipeline 文章中指出需要添加

config.serve_static_assets = true

config/application.rb文件改成下面的内容,然后它就能正常工作了。在我的电脑上使用“rake assets:precompile”进行测试时,预编译也能正常工作。我的项目已经成功上传并显示得非常好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接