Creating instance variables while looping over a hash

I"m reading in a YAML file using the yaml library in Ruby. My YAML
looks something like this:

config:
     value1: Something here
     value2: Something else

As I loop from the YAML like:

config["config"].each { |key, value| }

How could I set the key as an instance variable with the value of the
value of the key... resulting in:

@value1 = "Something here"
@value2 = "Something else"

Any thoughts?

You should play with Object#instance_variable_set(name, value)

···

Le mercredi 25 juillet 2007 à 21:57 +0900, blaine a écrit :

I"m reading in a YAML file using the yaml library in Ruby. My YAML
looks something like this:

config:
     value1: Something here
     value2: Something else

As I loop from the YAML like:

config["config"].each { |key, value| }

How could I set the key as an instance variable with the value of the
value of the key... resulting in:

@value1 = "Something here"
@value2 = "Something else"

Any thoughts?

--
Etienne Vallette d'Osia

Just an example to explain my mind :

···

---
# some representation of your data
config = {'config' => {'value1' => 'Something here', 'value2' =>
'Something else'}}

class A
  def m config
    config["config"].each { |key, value|
      # attr_accessor key (optional)
      self.class.instance_eval {attr_accessor key.to_s}
      # @key = value
      instance_variable_set "@#{key}", value
    }
  end
end

# test
a = A.new
a.m config
p a.value2
---

you can also specify if you want an attribute readable and/or writable

--
Etienne Vallette d'Osia

Your example really showed me, thank you so much Etienne. You have
really helped me understand it much better by your example.

···

--
Tim Knight

On Jul 25, 9:32 am, dohzya <doh...@gmail.com> wrote:

Just an example to explain my mind :

---
# some representation of your data
config = {'config' => {'value1' => 'Something here', 'value2' =>
'Something else'}}

class A
  def m config
    config["config"].each { |key, value|
      # attr_accessor key (optional)
      self.class.instance_eval {attr_accessor key.to_s}
      # @key = value
      instance_variable_set "@#{key}", value
    }
  end
end

# test
a = A.new
a.m config
p a.value2
---

you can also specify if you want an attribute readable and/or writable

--
Etienne Vallette d'Osia