I am lost .. why this simple code is running well with irb and not in my app... (syntax error)

running irb in the console, I can transform easily an array into an
hash

options = [["name", "aName"], ["integration_id", "604fe14d"], ["api_secret", "b0a7088d"], ["site_id", 99], ["secure_base_url", "https://www.mydomain.com:443/api/secure"], ["base_url", "http://www.mydomain.com/api"]]

options.inject({}) {|h,(k,v)| h[k]=v ; h}

{"name"=>"aName", "integration_id"=>"604fe14d",
"api_secret"=>"b0a7088d", "site_id"=>41, "secure_base_url"=>"https://
www.mydomain.com:443/api/secure", "base_url"=>"http://www.mydomain.com/
api"}

but running it in my code

def initialize(remote_server, options=nil)
...
@parameters = options.inject({}) {|h,(k,v)| h[k]=v; h }
..
end

running my app...
syntax error, unexpected $end, expecting '}'
@parameters = options.inject({}) {|h,(k,v)| h[k]=v

it doesn't accept the semi-column !!

running irb in the console, I can transform easily an array into an

hash

options = [[“name”, “aName”], [“integration_id”, “604fe14d”], [“api_secret”, “b0a7088d”], [“site_id”, 99], [“secure_base_url”, “https://www.mydomain.com:443/api/secure”], [“base_url”, “http://www.mydomain.com/api”]]

options.inject({}) {|h,(k,v)| h[k]=v ; h}

{“name”=>“aName”, “integration_id”=>“604fe14d”,

“api_secret”=>“b0a7088d”, “site_id”=>41, “secure_base_url”=>"https://

www.mydomain.com:443/api/secure", “base_url”=>"http://www.mydomain.com/

api"}

but running it in my code

def initialize(remote_server, options=nil)

@parameters = options.inject({}) {|h,(k,v)| h[k]=v; h }

end

why not try placing it in different lines.

@parameters = options.inject({}) do |h,(k,v)|

h[k]=v

h

end

if it still gives the error, try splitting the second argument inside the block instead of using (k,v)

It syntax checks ok for me. I pasted it into one of my files and it
is fine. Ruby 1.8.7. Are you sure it is not a problem in the
surrounding code somewhere. Is it ok if you replace it with a simple
line of code, or initially comment it out? Alternatively perhaps
there is an non-printing character on that line that is confusing the
parser. Try re-typing it completely.

Colin

thanks , I finally ended by doing that .. and it runs well

I forgot to mention I write in Ruby 1.9.2... but whatever
I should have the same error running irb ...
I replaced this line with a do block and it's running fine ... Did
Einstein said : "Ruby don't play dice" ?

Quoting Erwin <yves_dufour@mac.com>:

I forgot to mention I write in Ruby 1.9.2... but whatever
I should have the same error running irb ...
I replaced this line with a do block and it's running fine ... Did
Einstein said : "Ruby don't play dice" ?

Ah, but God did give electrons a bit of freewill. Ruby interpreters may take
similar libertes :wink:

Jeffrey