2013-11-30 2 views
3

У меня есть следующий определенный в модуле в моем приложении Rails:TypeError: нет неявного преобразования символа в Integer во время чтения YAML в Ruby,

module Selecting 
    module Execution 
    class ExecuteSpecific 

     def self.perform! 
     input = Data::FetchData.new.perform_action(param1, params2) 

Чтобы сделать код более общим, я хочу, чтобы удалить специфический methodcall от функции и режима его в YAML файл, как например:

:Newname: 
    - example: 'Data::FetchData.new.perform_action(param1, params2)' 

и реорганизовать выше («имя» должно быть передано в качестве символа):

module Selecting 
    module Execution 
    class ExecuteSpecific 

     def self.perform! name 

     new = YAML.load_file('path/to/file.yml')[name] 
     input = new[:example] 

Это возвращают

TypeError: no implicit conversion of Symbol into Integer

Как это исправить?

ответ

1

Эта ошибка говорит, что вы используете символ, где он ожидает целое число. Единственное место, где вы это делаете, - это то, где вы звоните new[:example]. Yaml.load_file возвращает массив строк, а не символов, поэтому, если вы обращаетесь к загруженному yaml документу, используя строковый индекс вместо символа, который должен решить проблему.

Например. input = new['example']

+0

Благодарим за быстрый ответ. Но если он возвращает 'Data :: FetchData.new.perform_action (param1, params2)' как строку, он не будет выполнен? – Severin

Смежные вопросы