La réutilisation DSL Ruby dans un REPL ou RIR?
-
22-10-2019 - |
Question
J'ai développé simple DSL pour des tâches sur une base de données dans UniVerse JRuby. Il ressemble à ceci
support = {
:host => 'localhost',
:account => 'SUPPORT'
}
uni_task support do
connect
exec "LIST FILE A1"
disconnect
end
et est mis en œuvre comme celui-ci
def uni_task(config, &block)
session = UniSession.new
session.instance_eval &block
end
Je suis conscient que vous pouvez déposer à un script dans iRB rubis comme ce
Mais est-il un moyen de tomber à une ligne de commande et ont changé la portée d'exécuter des méthodes d'instance d'un objet par défaut?
Par exemple,
irb> uni_commandline support
uni> connect
uni> exec "LIST FILE A1"
.... output .....
uni> disconnect
La solution
Dans irb vous pouvez utiliser la commande irb
pour se déplacer à l'intérieur d'un champ d'objet:
irb> irb some_object
A partir de là toutes les commandes exécutera à l'intérieur de la portée de cet objet (de sorte que vous pouvez appeler directement ses méthodes d'instance).
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow