> Regarde (ou utilise) la classe OrderedOptions qui utilise method_missing.

Un exemple vaut mieux qu'un long baratin:

class Setting < HashWithIndifferentAccess
  def method_missing(method)
    key?(method) ? self[method] : super
  end
end

s = Setting.new({:toto => '1', 'tata' => 2, 'key?' => 'tata'})

>> s.toto
=> "1"
>> s.tata
=> 2

Avec les drawbacks
#method qui existe déjà
>> s.key?
ArgumentError: wrong number of arguments (0 for 1)
        from (irb):11:in `key?'
        from (irb):11

#clée absente
>> s.not_a_key
NoMethodError: undefined method `not_a_key' for Settings
        from /Users/nel/ruby/feedback/vendor/heywatch-0.0.1/lib/heywatch/
ext.rb:46:in `method_missing'
        from (irb):3:in `method_missing'
        from (irb):12

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse [EMAIL PROTECTED]
-~----------~----~----~----~------~----~------~--~---

Répondre à