hash assignment (1.9.2)

Apparently ruby 1.9 allows a shortcut hash creation/assignment syntax

h = {foo: "bar"} => {:foo=>"bar"}

I ran across this today after converting an application to rails 3.1 over the last few month with release candidates and trying test deploying it. The application was developed using ruby 1.9.2 and is a combination of copy and paste from old, create new scaffolds and then adjust, etc. Really no real problems with the conversion, until I tried to run it on an old PPC macmini that is limited to 1.8.7 (my server!). I've been meaning to update this but have not had a reason until now.

Now the problem is not my code, since I didn't know about this new syntax until today. It is with the generated code. For instance / config/initializers/session_store.rb created with 1.9.2 contains:

Ngg::Application.config.session_store :cookie_store, key: '_ngg_session'

A new application created with 3.1 and using 1.8.7 contains:

Ngg::Application.config.session_store :cookie_store, :key => '_ngg_session'

That line would generate one of the first of many errors you'd get if you'd try to run the 1.9.2 application on a 1.8.7 machine.

I guess the bottom line is that if you are going to deploy with ruby 1.8.7, you better use 1.8.7 to develop the application and not have contributors using 1.9.2. Don't know if Rails has any caveats on this, but should.

I would of searched for treads on this, but not sure what I would have searched for.

Steve

Steve

Apparently ruby 1.9 allows a shortcut hash creation/assignment syntax

h = {foo: "bar"} => {:foo=>"bar"}

Yup, that was added to 1.9

That line would generate one of the first of many errors you'd get if you'd try to run the 1.9.2 application on a 1.8.7 machine.

I guess the bottom line is that if you are going to deploy with ruby 1.8.7, you better use 1.8.7 to develop the application and not have contributors using 1.9.2. Don't know if Rails has any caveats on this, but should.

Rails itself should work on both 1.8.7 and 1.9.2. I would certainly recommend that you develop using something that matches what you'll be deploying with as closely as possible.

Fred