読者です 読者をやめる 読者になる 読者になる

情報系人間のブログ

プログラミング、開発に関することを書いていきます。

railsでERROR NoMethodError: undefined method `symbolize_keys' for #<String:0x007fd7940199d8>

secrets.ymlをいじったらタイトルのエラーがでました。

以下の部分でエラーが起きていました。

home/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/railties-4.1.0/lib/rails/application.rb

def secrets #:nodoc:
  @secrets ||= begin
    secrets = ActiveSupport::OrderedOptions.new
    yaml = config.paths["config/secrets"].first
    if File.exist?(yaml)
      require "erb"
      all_secrets = YAML.load(ERB.new(IO.read(yaml)).result) || {}
      env_secrets = all_secrets[Rails.env]
      secrets.merge!(env_secrets.symbolize_keys) if env_secrets # <-----ここ
    end

    # Fallback to config.secret_key_base if secrets.secret_key_base isn't set
    secrets.secret_key_base ||= config.secret_key_base

    secrets
  end
end

ぐぐッた結果こちらの方と同じエラーだったようです。

ruby on rails - Internal Server Error: undefined method `symbolize_keys' for #<String:0x0000000589bde0> - Stack Overflow

書いてある通りにsecrets.yml内のセミコロンの後にスペースを入れたら解決しました。

WRONG: secret_key_base:afcb44c
CORRECT: secret_key_base: afcb44c

こういった気をつければ起こらないエラーのために時間を取られないよう気をつけたいですね。