blaine
July 25, 2007, 2:59pm
1
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?
blaine
July 25, 2007, 3:14pm
2
Le mercredi 25 juillet 2007 à 21:57 +0900, blaine a écrit :
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)
blaine
July 25, 2007, 3:33pm
3
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
blaine
July 25, 2007, 4:08pm
4
Your example really showed me, thank you so much Etienne. You have
really helped me understand it much better by your example.
–
Tim Knight