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
Était-ce utile?

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
scroll top