Help with YAML, hashes, and design

HI,

How do I convert a string value to a variable name? To get the value of
the variable.
Is the following technique good design?

I have an app that needs to create urls in a bunch of different
formats. Below is a simplified example.

http://www.site1.com?firstname=Wayne&lastname=Gretzky
http://www.site2.com?fname=Wayne&lname=Gretzky

In my code, I’ve have variables first_name and last_name.
So I put the mappings into a YAML file.


name: site1
base_url: http://www.site1.com?
params:
firstname: first_name
lastname: last_name

name: site2
base_url: http://www.site2.com?
params:
fname: first_name
lname: last_name

Then my code:


first_name = “Wayne”
last_name = “Gretzky”

sites_config_file = open(‘config/sites.yaml’).read
@sites = YAML.load(sites_config_file)
url = @sites[“base_url”]
@sites[“site1”][“params”].each do |key,value|
url = url + “&” + key +“=”+ eval(“#{value}”) #HELP HERE
end
puts url;

How do I get ‘value’ to do what I want?

You can convert string to a Symbol and vice-versa. I don’t think you
can convert a string value to a variable name. Have you tried using
string interpolation to solve your problem?

I was overcomplicating things before. Here is all I had to do:

eval(value).to_s