Итак, я выясняю, как настроить некоторые параметры для класса.'options' - это хешЯ хочу
1) отфильтровать опции, которые мне не нужны или не нужны
2) установить некоторые переменные экземпляра для использования в другом месте
3) и установить другой хеш собработанные параметры как @ current_options.
def initialize_options(options)
@whitelisted_options, @current_options = [:timestamps_offset, :destructive, :minimal_author], {}
n_options = options.select { |k,v| @whitelisted_options.include?(k) }
@current_options[:timestamps_offset] = @timestamp_offset = n_options.fetch(:timestamps_offset, 0)*(60*60*24)
@current_options[:destructive] = @destructive = n_options.fetch(:destructive, false)
@current_options[:minimal_author] = @minimal_author = n_options.fetch(:minimal_author, false)
end
Я предполагаю, что это немного много, независимо от того, что я передаю, я получаю:
{:timestamps_offset=>0, :destructive=>false, :minimal_author=>false}
Когда я делаю эту строкустрока из командной строки, она работает так, как я хочу, но не в моем классе.Итак, что происходит и как мне это убрать?
РЕДАКТИРОВАТЬ: это на самом деле работает без участия класса, в котором я его использую, но внутри это не так, что реальность - это то, что происходит, яЯ не знаю прямо сейчас.
attr_reader: current_options - это то, как это установлено в классе, возможно, это требует некоторой ревизии.
EDIT2: строка 2 метода должна выбираться из@ whitelisted_options
РЕДАКТИРОВАТЬ3: На самом деле оказалось то, о чем я не думал ... "параметры" анализируются из файла yaml как строки .... и я выбирал символы, меняя их вокругИмеет значение то, что до того, как метод искал символы и не находил ни одного, например, «деструктивный» vs: деструктивный, поэтому всегда по умолчанию используется значение по умолчанию.Короче говоря, мне просто нужно было обозначать хеш-ключи при импорте параметров.