我在我的Rails应用程序中使用settingslogic gem(Ruby 2.0.0p247 / Rails 3.2.13)。
我可以在没有嵌套时动态更改设置,例如
#config/settings.yml
defaults:&defaults
mysetting: 1
nested:
myothersetting: 2
Settings[:mysetting] = 10
Settings.mysetting # puts 10
但是我无法以相同的方式更改嵌套属性:
Settings[:nested][:myothersetting] = 20
Settings.nested.myothersetting # puts 2
我做错了什么?
答案 0 :(得分:2)
我不确定什么版本的ruby&您正在使用的rails,但我尝试使用与yaml文件类似的设置,并显示有关解析错误的错误。我认为一个嵌套在它下面的键也不能有价值。
也就是说,我遇到了类似的行为 - 嵌套值的基于哈希的访问器设置/返回了预期值,而基于方法的访问器从文件中返回了值并且没有得到更新:
# config/settings.yml
defaults: &defaults
thing1: 1
thing2: 2
nest:
thing3: 3
development:
<<: *defaults
2.0.0p247 :001 > Settings[:nest][:thing3] = 30
=> 30
2.0.0p247 :002 > Settings[:nest][:thing3]
=> 30
2.0.0p247 :003 > Settings.nest.thing3
=> 3
看起来这可能是gem中的一个bug,它基于github上的问题列表似乎是许多嵌套属性中的一个。