/ / TypeError: brak niejawnej konwersji symbolu na liczbę całkowitą podczas czytania YAML w Ruby - ruby-on-rail, ruby, yaml

TypeError: no niejawna konwersja symbolu na liczbę całkowitą podczas czytania YAML w Ruby - ruby-on-rails, ruby, yaml

W mojej aplikacji Railsowej zdefiniowałem następujące elementy:

module Selecting
module Execution
class ExecuteSpecific

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

Aby kod był bardziej ogólny, chcę usunąć określone wywołanie metody z funkcji i przekształcić je w plik YAML jako taki:

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

i refaktoryzuj powyższe do („nazwa” powinna być przekazana jako symbol):

module Selecting
module Execution
class ExecuteSpecific

def self.perform! name

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

Ten zwrot a

TypeError: brak niejawnej konwersji symbolu na liczbę całkowitą

Jak można to naprawić?

Odpowiedzi:

1 dla odpowiedzi № 1

Ten błąd oznacza, że ​​używasz symbolu, w którym oczekuje się liczby całkowitej. Jedyne miejsce, w którym to robisz, to miejsce, do którego dzwonisz new[:example]. Yaml.load_file zwraca tablicę ciągów, a nie symboli, więc jeśli uzyskasz dostęp do dokumentu załadowanego yaml za pomocą indeksu ciągów zamiast symbolu, który powinien rozwiązać problem.

Na przykład. input = new["example"]