Forum: Ruby on Rails yaml and ip addresses

1d4a45a695b48edc70359ca6d015e2f4?d=identicon&s=25 John Merlino (johnmerlino)
on 2013-05-21 18:28
(Received via mailing list)
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.
1a4ff0766a653c62e0dab34bacda9873?d=identicon&s=25 Norbert Melzer (Guest)
on 2013-05-21 20:08
(Received via mailing list)
Use " for strings if they are ambitious, "127.0.0.1" for example.
Am 21.05.2013 18:27 schrieb "John Merlino" <stoicism1@aol.com>:
09a32175057418748822c587ac08c429?d=identicon&s=25 Abinoam Jr. (abinoampraxedes_m)
on 2013-05-22 15:49
(Received via mailing list)
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}}
Aa082c8b00a50928e5860dcd70bf2368?d=identicon&s=25 tamouse mailing lists (Guest)
on 2013-05-23 04:36
(Received via mailing list)
On Tue, May 21, 2013 at 11:27 AM, John Merlino <stoicism1@aol.com>
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.
Please log in before posting. Registration is free and takes only a minute.
Existing account

NEW: Do you have a Google/GoogleMail, Yahoo or Facebook account? No registration required!
Log in with Google account | Log in with Yahoo account | Log in with Facebook account
No account? Register here.