10

经过 24 小时试图找到我的应用程序的问题。我终于找到了问题所在。

我跑了

rake assets:precompile RAILS_ENV=production

我不断收到这个错误。

/Users/vezu/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /Users/vezu/.rvm/gems/ruby-1.9.3-p194@global/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
rake aborted!
database configuration does not specify adapter

Tasks: TOP => environment
(See full trace by running task with --trace)
rake aborted!
Command failed with status (1): [/Users/vezu/.rvm/rubies/ruby-1.9.3-p194/bi...]

我的 database.yml 文件看起来像这样

development:
  adapter: postgresql
  host: localhost
  encoding: unicode
  database: ndoda_development
  pool: 5
  username:
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: ndoda_test
  pool: 5
4

7 回答 7

30

简单的解决方案是在我的 application.rb 中添加一个简单的行

config.assets.initialize_on_precompile = false

一切正常。

于 2012-06-04T10:07:52.613 回答
10

这应该有效:rake assets:precompile RAILS_ENV=development

当您的 database.yml 不包含它时,它会尝试加载您的生产环境。

于 2012-08-30T04:09:25.493 回答
7

做这个:

development:
  adapter: postgresql
  host: localhost
  encoding: unicode
  database: ndoda_development
  pool: 5
  username:
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: ndoda_test
  pool: 5

# Add the below...

production:
  adapter: postgresql
  host: localhost
  encoding: unicode
  database: ndoda_production
  pool: 5
  username:
  password:

Heroku 会用它自己的版本覆盖你的 database.yml,不管你在里面放了什么。但是,在生产环境中运行的 rake 任务需要一个变量,所以给它一个虚拟变量。

如上所述,您还可以将“config.assets.initialize_on_precompile = false”添加到您的 production.rb。如果设置,Heroku 要求将其设置为“假”。

于 2012-10-16T20:30:44.573 回答
2

该解决方案停止使用 rails 4,这是更新后的解决方案:只需传递本文中提到的虚拟数据库:

https://iprog.com/posting/2013/07/errors-when-precompiling-assets-in-rails-4-0

命令是: bundle exec rake RAILS_ENV=production DATABASE_URL=postgresql://user:pass@127.0.0.1/dbname assets:precompile

于 2016-02-18T23:59:51.517 回答
1

对我有用的是:

rake assets:precompile RAILS_ENV=production

通过 ssh 访问您的服务器并输入该命令,它应该可以解决问题。

于 2015-01-29T16:44:49.000 回答
1

确保您的本地文件中有一些虚拟 production条目config/database.yml

production:
  <<: *default
  database: your_local_database_name

我在 2016 年使用 Rails 4.2.6 和 Capistrano 3.4 遇到了同样的错误。在将资产与代码一起上传之前,我们在部署脚本期间对资产进行了预编译,但是 rake assets:precompile 需要一些生产条目,即使它只是一个虚拟条目。来源:https ://github.com/TalkingQuickly/capistrano-3-rails-template/issues/12

于 2016-04-18T12:19:35.460 回答
-2

称呼rake assets:precompile:all

于 2013-10-17T17:14:04.650 回答