【问题标题】:Precompiling Assets with Rails 3.1使用 Rails 3.1 预编译资产
【发布时间】:2025-11-28 03:55:02
【问题描述】:

我正在推动对 Heroku 的更改,我得到了...

耙子中止!
无法连接到服务器:连接被拒绝
服务器是否在主机“127.0.0.1”上运行并接受
端口 5432 上的 TCP/IP 连接?

当我查阅 Heroku 文档 Here 时,它告诉我需要“在本地 config/database.yml 中配置一个不存在的数据库”我不确定如何创建一个“不存在的数据库”?我是初学者,如果你能给我任何帮助,我将不胜感激。谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3.1 asset-pipeline


    【解决方案1】:

    在 Heroku 上,您必须在 config/application.rb 中设置这一行:

    config.assets.initialize_on_precompile = false
    

    http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

    为了更快地进行资产预编译,您可以部分加载您的应用程序 通过将 config.assets.initialize_on_precompile 设置为 false config/application.rb,虽然在这种情况下模板看不到 应用程序对象或方法。 Heroku 要求这是错误的。

    【讨论】:

    • 添加关于此行后需要提交一个应用程序。
    【解决方案2】:

    这意味着放入一个在您的本地开发环境中实际上并不存在的数据库的名称。然后尝试运行rake assets:precompile

    您正在本地模拟相同的场景(一个不可用的数据库)。

    您是否在此应用中使用了 Devise?它有一个known issue similar to this。您可能想要更新该 gem。

    【讨论】:

    • 我也看到了这个问题,但我没有使用 Devise。我是否需要在数据库中放入任何不存在的东西?目前我有一个用于开发、测试和生产的... 开发:适配器:sqlite3 数据库:db/development.sqlite3 池:5 超时:5000
    【解决方案3】:

    我遇到了同样的问题。似乎由于某种原因,在资产预编译时未设置 DATABASE_URL 环境变量。一种解决方法是在 production.rb 文件中设置 DATABASE_URL。 ENV["DATABASE_URL"] = <your db url> 这应该可以解决问题。

    【讨论】: