2016-04-20 1 views
2

quelqu'un sait comment implémenter l'option de cycle à sec dans Ruby?Mise en œuvre de l'exécution à sec en écriture ruby ​​

je besoin de quelque chose comme ça, mais seulement pour le rubis https://serverfault.com/questions/147628/implementing-dry-run-in-bash-scripts

J'ai essayé, mais une partie après autre ne fonctionne pas:

DRY_RUN = true 

def perform(*args) 
    command = args 
    if DRY_RUN 
    command.each{|x| puts x} 
    else 
    command.each {|x| x} 
    end 
end 

perform("puts 'Hello'") 

Merci pour toute idée à l'avance.

PS Je ne veux pas utiliser quelque chose comme système ("ruby -e \"puts 'Hello'\"")

+1

Dans la branche d'autre, vous voulez probablement quelque chose comme 'command.each {| x | met x; eval x} ' –

+0

Oui, merci! Cela fonctionne plutôt bien. – jumpy

Répondre

1

Cela pourrait aider:

def perform(*commands) 
    commands.each { |x| DRY_RUN ? puts(x) : eval(x)} 
end 

Il en résulte:

DRY_RUN = true 
perform("puts 'Hello'") 

met 'Bonjour'

=> ["met 'Bonjour'"]

DRY_RUN = false 
perform("puts 'Hello'") 

Bonjour

=> [ "met 'Bonjour'"]

+0

Oui, avec "eval" cela fonctionne correctement, merci beaucoup @Maxim pour votre réponse! – jumpy