gpt4 book ai didi

ruby-on-rails - Rails 4 和 Heroku - 抽取 Assets :precompile trying to call Postgres

转载 作者:行者123 更新时间:2023-12-04 02:50:49 25 4
gpt4 key购买 nike

所以我在这上面花了一天时间,阅读了每一个 SO 问题,甚至是稍微相关的问题,并检查了 Heroku 文档。

这是推送时的 Heroku 问题:

-----> Preparing app for Rails asset pipeline
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?

我相信这很熟悉。

我知道 Heroku 在 Rails 4 上的部署改变了很多东西,但我什至尝试了许多 4.0 之前的建议来尝试修复它。

它的:

   /tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `initialize'
/tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `new'
/tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
/tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
/tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `new'
/tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'

等等...据我所知,这是因为在编译期间试图访问数据库。

到目前为止,我的问题是 this question 的副本

RAILS_ENV=production bundle exec rake assets:precompile

运行正常并生成了 manifest.json,但 Heroku 无法识别它。

我也试过了,但我认为 Rails 4 默认情况下是错误的。

config.assets.initialize_on_precompile = false

那么我很乐意尝试的解决方法是:

heroku labs:enable user-env-compile

我尝试了最多,创建了新的 heroku 应用程序,将其打开和关闭再打开。尝试了多次推送。我也在需要的时候做出 promise ,所以不是那样。

还尝试了 rails_12factor 和其他一些我不记得的东西。一切都无济于事。

有什么我想念的吗? user-env-compile 似乎解决了其他人的问题,但似乎对我没有影响。

我什至重新启动了我的电脑几次...任何帮助将不胜感激。

最佳答案

某处有一个 gem 正在尝试连接到数据库。在我的例子中,它是 acts_as_taggable_on。我 filed a bug with the maintainer .如果我在我的模型中注释掉使用它的行,预编译工作正常:

# acts_as_taggable
# accepts_nested_attributes_for :tags

如果 sidekiq 是你的罪魁祸首,你可以通过注释掉 mount 语句、在本地预编译 Assets 并将它们推送到 heroku 来解决这个问题。如果 gem 的维护者修复了错误,您就可以在 slug 编译期间返回到预编译。

有点麻烦,因为你必须记住还原路由文件(即不要意外地使用注释掉的挂载语句提交)。

关于ruby-on-rails - Rails 4 和 Heroku - 抽取 Assets :precompile trying to call Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17795953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com