【问题标题】:rake aborted! can't convert nil into Hash耙中止!无法将 nil 转换为 Hash
【发布时间】:2014-07-18 14:31:44
【问题描述】:

rake 中止!无法加载Rails.application.database_configuration:无法将 nil 转换为 Hash

我正在尝试在 openshift 上的 rails 上部署 ruby​​,然后我尝试运行 rake db:migrate。然后我面临这个问题。

我在 openshift 上使用https://github.com/kohjx/TestYourCode.git 使用 ruby​​ on rails + mysql 5.1 创建应用程序

然后我配置 config/database.yml

default: &default
  #adapter: sqlite3
  adapter: mysql2
  pool: 5
  timeout: 5000
  database: "<%=ENV['OPENSHIFT_APP_NAME']%>"
  username: "<%=ENV['OPENSHIFT_MYSQL_DB_USERNAME']%>"
  password: "<%=ENV['OPENSHIFT_MYSQL_DB_PASSWORD']%>"
  host:     <%=ENV['OPENSHIFT_MYSQL_DB_HOST']%>
  port:     <%=ENV['OPENSHIFT_MYSQL_DB_PORT']%>



development:
  <<: *default
  #database: db/development.sqlite3

test:
  <<: *default
  #database: db/test.sqlite3
  database: testyourcode_test

production:
  <<: *default
  secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
  #database: db/production.sqlite3

我设置了 RAILS_ENV=development,但我不知道如何解决。任何帮助将不胜感激!

【问题讨论】:

  • 出现错误时您正在运行什么 rake 任务?
  • 他说rake db:migrate
  • xD 完全错过了这一点。我的错。

标签: ruby-on-rails ruby openshift


【解决方案1】:

乍一看,您似乎使用 Openshift DB 作为默认设置,然后您的所有 Rails 环境都使用该默认设置。您的本地计算机(我假设您正在运行rake db:migrate)无法使用这些连接详细信息到 OPenshift DB。

不要将默认部分中的 Openshift DB 配置移至生产设置,并将 RAILS_ENV=production 切换为 rhc set-env RAILS_ENV=production。然后使用本地机器可以使用的设置配置开发。完成后,尝试再次运行 db:migrate。

【讨论】:

  • 谢谢,我解决了。这是secret.yml 中的secret_key_base 问题。 database.yml 也非常关注缩进。
猜你喜欢
  • 2012-04-08
  • 2013-06-05
  • 2012-12-25
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 2012-02-09
相关资源
最近更新 更多