【问题标题】:rake db:migrate throws undefined method 'symbolize_keys' for nil:NilClassrake db:migrate 为 nil:NilClass 抛出未定义的方法 'symbolize_keys'
【发布时间】:2010-02-21 19:08:49
【问题描述】:

第一次使用 rails,尝试时遇到 rake 错误:
rake db:migrate RAILS_ENV=staging

错误:
(在[我的当前目录]) 耙中止! nil:NilClass 的未定义方法“symbolize_keys”

有人看过吗?

【问题讨论】:

  • 只有在暂存环境中运行时才会报错吗?发展呢?
  • @Beerlington:这会对任何事情产生不利影响吗?
  • 如果 rake 任务正在寻找一个不存在的暂存环境,找到 nil,并尝试调用 nil.symbolize_keys,则可以。
  • 我只是好奇它是特定于暂存环境设置还是迁移问题。如果它在不同的环境中工作,那么我会查看您的 database.yml 文件并将 staging 与正在工作的环境进行比较。
  • 使用 --trace 运行 rake,这样我们就可以看到失败的地方。

标签: ruby-on-rails rake


【解决方案1】:

我今天也遇到了同样的问题。我忘记在我的 yaml 配置文件中添加“暂存”。它有 dev/test/prod... 但我忽略了 staging。

例如 配置/初始化程序/app_config.rb APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/app_config.yml")[RAILS_ENV].symbolize_keys

【讨论】:

    【解决方案2】:

    当您的配置 yaml 文件正在加载并且它正在尝试查找不存在的暂存配置时,最有可能发生该错误。 (它正在尝试symbolize 暂存环境的密钥,但由于它们不存在,因此它正在尝试 symbolize nil)检查 config 目录中的 yaml 文件,以查看是否缺少暂存配置。添加后,一切都会正常。

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      在 rails 3.2 中,确保您有一个用于暂存的部分或任何您的环境名称在 config/settings.yml 中

      【讨论】:

        猜你喜欢
        • 2012-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-11
        • 2014-03-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多