C'est moche ou pas de faire des trucs de ce genre (instance_eval sur le contenu d'un fichier)
Code :
class Script
def initialize
@settings = {}
end
def set(k, v)
@settings[k] = v
end
end
class Manager
def load!(file)
s = Script.new
s.instance_eval(IO.read(file))
end
end
Je souhaiterai que les scripts soient écris en invoquant seulement des méthodes, blocks. Je veux pas hériter d'une classe ou inclure un module de base pour les scripts. J'ai découvert les DSL ca à l'air d'être ce que je recherche mais j'arrive pas à comprendre comment stocker les "@settings" ici dans l'exemple pour chaque script.
une fois le script chargé avec "load" comment faire pour savoir à partir de quel script est appelée la méthode "set"?
Code :
# script1.rb
set(:test, true)
on(:event) do
"test"
end
pour le moment j'utilise instance_eval sur une classe de base qui me permet de stocker et accéder aux objets facilement, ça marche bien mais si vous avez de meilleures solutions.
Marsh Posté le 16-10-2013 à 05:21:37
Salut,
C'est moche ou pas de faire des trucs de ce genre (instance_eval sur le contenu d'un fichier)
Je souhaiterai que les scripts soient écris en invoquant seulement des méthodes, blocks.
Je veux pas hériter d'une classe ou inclure un module de base pour les scripts.
J'ai découvert les DSL ca à l'air d'être ce que je recherche mais j'arrive pas à comprendre comment stocker les
"@settings" ici dans l'exemple pour chaque script.
une fois le script chargé avec "load" comment faire pour savoir à partir de quel script est appelée la méthode "set"?
pour le moment j'utilise instance_eval sur une classe de base qui me permet de stocker et accéder aux objets facilement,
ça marche bien mais si vous avez de meilleures solutions.