V module v mojej aplikácii Rails mám definované:
module Selecting
module Execution
class ExecuteSpecific
def self.perform!
input = Data::FetchData.new.perform_action(param1, params2)
Aby bol kód všeobecnejší, chcem z funkcie odstrániť konkrétny spôsob volania a prepnúť ho do súboru YAML ako taký:
:Newname:
- example: "Data::FetchData.new.perform_action(param1, params2)"
a vyššie uvedené písmeno („meno“ by malo byť uvedené ako symbol):
module Selecting
module Execution
class ExecuteSpecific
def self.perform! name
new = YAML.load_file("path/to/file.yml")[name]
input = new[:example]
Tento návrat a
TypeError: žiadna implicitná konverzia symbolu na celé číslo
Ako je to možné?
odpovede:
1 pre odpoveď č. 1Táto chyba hovorí, že používate symbol, ak očakáva celé číslo. Jediné miesto, ktoré robíte, je miesto, kde voláte new[:example]
. Yaml.load_file
vráti pole reťazcov a nie symbolov, takže ak pristupujete k svojmu dokumentu yaml načítanému pomocou indexu reťazcov namiesto symbolu, ktorý by mal problém vyriešiť.
Napr. input = new["example"]