huacnlee / rails-settings-cached

Global settings for your Rails application.
Other
1.06k stars 202 forks source link

Rails 5 NoMethodError: undefined method `[]=' for nil:NilClass #115

Closed jonian closed 8 years ago

jonian commented 8 years ago

Hello,

When I try to get a setting value in rails 5, I get the following error:

irb(main):002:0> Setting.first
  Setting Load (1.1ms)  SELECT  "settings".* FROM "settings" ORDER BY "settings"."id" ASC LIMIT $1  [["LIMIT", 1]]
=> #<Setting id: 1, var: "general", value: "--- !ruby/hash-with-ivars:ActionController::Parame...", thing_id: nil, thing_type: nil, created_at: "2015-09-02 07:12:18", updated_at: "2016-06-02 10:55:22">
irb(main):003:0> Setting.first.value
  Setting Load (0.7ms)  SELECT  "settings".* FROM "settings" ORDER BY "settings"."id" ASC LIMIT $1  [["LIMIT", 1]]
NoMethodError: undefined method `[]=' for nil:NilClass
    from /home/jonian/.gem/ruby/2.3.0/gems/actionpack-5.0.0.1/lib/action_controller/metal/strong_parameters.rb:414:in `[]='
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:362:in `block in revive_hash'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:336:in `each'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:336:in `each_slice'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:336:in `revive_hash'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:271:in `block in visit_Psych_Nodes_Mapping'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:268:in `each'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:268:in `each_slice'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:268:in `visit_Psych_Nodes_Mapping'
    from /usr/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in `visit'
    from /usr/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in `accept'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:311:in `visit_Psych_Nodes_Document'
    from /usr/lib/ruby/2.3.0/psych/visitors/visitor.rb:16:in `visit'
    from /usr/lib/ruby/2.3.0/psych/visitors/visitor.rb:6:in `accept'
    from /usr/lib/ruby/2.3.0/psych/visitors/to_ruby.rb:32:in `accept'
    from /usr/lib/ruby/2.3.0/psych/nodes/node.rb:38:in `to_ruby'
    from /usr/lib/ruby/2.3.0/psych.rb:253:in `load'
    from /home/jonian/.gem/ruby/2.3.0/gems/rails-settings-cached-0.6.5/lib/rails-settings/settings.rb:11:in `value'
    from (irb):3
    from /home/jonian/.gem/ruby/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/console.rb:65:in `start'
    from /home/jonian/.gem/ruby/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/console_helper.rb:9:in `start'
    from /home/jonian/.gem/ruby/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
    from /home/jonian/.gem/ruby/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
    from /home/jonian/.gem/ruby/2.3.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'
jonian commented 8 years ago

After more research, seems that this is a rails 5 issue:

https://github.com/rails/rails/pull/26017