В Settingslogic fork разрешение массива как источника, в ruby 1.8.7 все работает, но в ruby 1.9.2 есть ошибка. Проблема находится в этой части кода:Ruby 1.9.2 переменные class_eval
self.class.class_eval <<-EndEval
def #{key}
return @#{key} if @#{key}
raise MissingSetting, "Missing setting '#{key}' in #{@section}" unless has_key? '#{key}'
value = fetch('#{key}')
@#{key} = value.is_a?(Hash) ? self.class.new(value, "'#{key}' section in #{@section}") : value
end
EndEval
@section == ["path_to_yml_file1", "path_to_yml_file2",...]
Похоже # {} вычисляется по каким-то странным образом, «# {@} раздел», как представляется, является массивом, а не строка. Может ли кто-нибудь объяснить это?
след Ошибка:
@section == ["User/project/config/defaults.yml", "/Users/project/config/development.yml"]
ruby-1.9.2-p290 :001 > Settings.keys
SyntaxError: (eval):3: syntax error, unexpected tSTRING_BEG, expecting keyword_end
...project/config/defaults.yml", "/Users/project...
... ^
(eval):3: syntax error, unexpected tSTRING_BEG, expecting keyword_end
...project/config/development.yml"]" unless has_key? 'front'
... ^
(eval):5: syntax error, unexpected tSTRING_BEG, expecting ')'
...project/config/defaults.yml", "/Users/project...
... ^
(eval):5: syntax error, unexpected tSTRING_BEG, expecting keyword_end
...project/config/development.yml"]") : value
... ^
(eval):5: syntax error, unexpected ')', expecting keyword_end
...project/config/development.yml"]") : value
... ^
from .../settingslogic-3b5d7d9cc319/lib/settingslogic.rb:198:in `class_eval'
Спасибо за любую помощь
Что такое '@section == [" User/project/config/defaults.yml "," /Users/project/config/development.yml "]' все о? –
просто ярлык, чтобы показать, каково значение @section на данный момент ... – santuxus