问题描述
我需要帮助.尝试将我的应用程序上传到 heroku 时,出现此错误,有人知道为什么吗?有几个是错的.谢谢
I need help. When trying to upload my app to heroku, I get this error, anyone know why? A few was wrong. thanks
Using rake (10.1.0)
...
Using tlsmail (0.0.1)
Using uglifier (2.1.2)
Your bundle is complete! It was installed into ./vendor/bundle
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
/tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/ruby/1.9.1/gems/tlsmail-0.0.1/lib/net/smtp.rb:806: warning: already initialized constant SMTPSession
...
/tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/ruby/1.9.1/gems/tlsmail-0.0.1/lib/net/pop.rb:702: warning: already initialized constant APOPSession
DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/Rakefile:7)
...
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?
/tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in `initialize'
/tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in `new'
...
/tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>'
Tasks: TOP => environment
(See full trace by running task with --trace)
!
! Precompiling assets failed.
推荐答案
来自 Heroku 文档:
这意味着您的应用程序正在尝试连接到数据库作为 rake assets:precompile 的一部分.由于环境中不存在配置变量,我们使用占位符 DATABASE_URL 来满足 Rails.
要解决此问题,请确保在您的 config/application.rb
中出现以下行:
To resolve this issue, ensure that the following line appears in your config/application.rb
:
# config/application.rb
config.assets.initialize_on_precompile = false
添加后,提交您的更改并重新部署到 Heroku - 您的资产应该可以在不尝试连接到数据库的情况下编译您的应用程序,这应该可以解决您所看到的错误.
Once added, commit your change and redeploy to Heroku – your assets should compile without your app attempting to connect to the database, which should resolve the error you're witnessing.
更新:
您的堆栈跟踪的第 46 行包含以下消息:Devise.secret_key 未设置.代码>
Line 46 of your stacktrace includes the following message: Devise.secret_key was not set.
根据设计的作者,José Valim,这个问题可以通过以下方式解决:
According to the author of Devise, José Valim, this issue can be resolved in the following manner:
请将以下内容添加到您的设计初始值设定项中:
config.secret_key = '-- 密钥 --'
config.secret_key = '-- secret key --'
或者,以下解决方案似乎对许多用户都有效:
Alternatively, the following solution seems to have worked for a number of users:
我转到我的 routes.rb 文件并注释掉了 devise_for :installs 行
然后我回去重新运行 rails generate devise:install.如果这不起作用,请通过像这样编辑 Gemfile 对 Devise 的引用来使用以前版本的 devise: gem 'devise', '3.0.3' 然后按照我上面提到的步骤进行操作.
Then I went back and reran rails generate devise:install. If that doesn't work, use the previous version of devise by editing your Gemfile's reference to Devise like this: gem 'devise', '3.0.3' and then follow the steps i mentioned above.
这篇关于Heroku 上传预编译资产失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!