Yaml and ip addresses

I was using this code

    url = "http://#{agent_host}:#{agent_port}/home/create_unit?"

And it worked fine in development but for my config.yml, I was
specifying localhost for agent_host. However in production, agent_host
is an actual ip address and it just wouldn’t work. So I had to
explicitly put the ip address in production:

    url = "http://xxx.xxx.xx.xxx/home/create_unit?"

This is what that config file had:

agent_development:
host: localhost
port: 3001
agent_production:
host: xxx.xxx.xx.xxx
port: 80
agent_staging:
host: xxx.xxx.xx.xxx
port: 80

where the x’s are replaced with actual numeric values that represent
ip address.

How does the yaml interpret that ip address? As a decimal value? I’m
not sure why when I substitute it into the string interpolation, that
it doesn’t in production.

Use " for strings if they are ambitious, “127.0.0.1” for example.
Am 21.05.2013 18:27 schrieb “John M.” [email protected]:

Intepreted as String. Look at my irb session (I’ve put 200.200.200.200
for testing purposes).

Try logging what the string looks like after interpolation.

1.9.3p429 :020 > y = <<EOF
1.9.3p429 :021"> agent_development:
1.9.3p429 :022"> host: localhost
1.9.3p429 :023"> port: 3001
1.9.3p429 :024"> agent_production:
1.9.3p429 :025"> host: 200.200.20.200
1.9.3p429 :026"> port: 80
1.9.3p429 :027"> agent_staging:
1.9.3p429 :028"> host: 200.200.200.200
1.9.3p429 :029"> port: 80
1.9.3p429 :030"> EOF
=> “agent_development:\n host: localhost\n port:
3001\nagent_production:\n host: 200.200.20.200\n port:
80\nagent_staging:\n host: 200.200.200.200\n port: 80\n”

1.9.3p429 :031 > YAML.load y
=> {“agent_development”=>{“host”=>“localhost”, “port”=>3001},
“agent_production”=>{“host”=>“200.200.20.200”, “port”=>80},
“agent_staging”=>{“host”=>“200.200.200.200”, “port”=>80}}

On Tue, May 21, 2013 at 11:27 AM, John M. [email protected]
wrote:

    url = "http://xxx.xxx.xx.xxx/home/create_unit?"

host: xxx.xxx.xx.xxx
port: 80

where the x’s are replaced with actual numeric values that represent
ip address.

How does the yaml interpret that ip address? As a decimal value? I’m
not sure why when I substitute it into the string interpolation, that
it doesn’t in production.

I don’t think it’s a YAML problem. Show us the code where you go from
your YAML configuration to instantiating agent_host and agent_port in
the url assignment:

>         url = 

“http://#{agent_host}:#{agent_port}/home/create_unit?”

BTW, I think you’d might be better off constructing the url via the
URI library. It makes things a bit less error prone and can do nice
things like check the validity of the url syntax and such.