动态设置逻辑设置

时间:2013-08-11 18:28:22

标签: ruby-on-rails settingslogic

我在我的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

我做错了什么?

1 个答案:

答案 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上的问题列表似乎是许多嵌套属性中的一个。