2011-11-05 65 views
0

我刚将一个项目移动到另一个服务器,似乎自从Ruby 1.9.2以来可用的新的散列参数有问题。当我运行rails s我收到以下错误Ruby 1.9.3中的新样式散列参数可用错误

Exiting 
/usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load': /var/www/myapp/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end (SyntaxError) ...sion_store :cookie_store, key: '_myapp_session' 
         ^
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `load_dependency' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:640:in `new_constants_in' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `load_dependency' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:234:in `load' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/engine.rb:556 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/engine.rb:555:in `each' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/engine.rb:555 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `instance_exec' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/initializable.rb:30:in `run' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/initializable.rb:55:in `run_initializers' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `each' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/initializable.rb:54:in `run_initializers' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/application.rb:96:in `initialize!' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `send' 
from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/railtie/configurable.rb:30:in `method_missing' 
from /var/www/myapp/config/environment.rb:5 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `load_dependency' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:640:in `new_constants_in' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:223:in `load_dependency' 
from /usr/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:240:in `require' 
from /var/www/myapp/config.ru:4 
from /usr/lib/ruby/gems/1.8/gems/rack-1.3.4/lib/rack/builder.rb:51:in `instance_eval' 
from /usr/lib/ruby/gems/1.8/gems/rack-1.3.4/lib/rack/builder.rb:51:in `initialize' 
from /var/www/myapp/config.ru:1:in `new' 
from /var/www/myapp/config.ru:1 

错误是参考以下行

Myapp::Application.config.session_store :cookie_store, key: '_myapp_session' 

我真的不认为上面的代码行的问题。如果我删除键:'_myapp_session'或将其恢复为Ruby 1.8.X样式,我只是得到下一个散列参数错误。

我移动的服务器最初在服务器上运行了Ruby 1.8.7。我更新了红宝石1.9.3。当我运行ruby -v我得到ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]

我不知道为什么我仍然有哈希问题。有没有人遇到类似的问题?

+0

您是如何在该机器上安装1.9.x的? RVM? rbenv?取代系统红宝石? –

+0

@Derek,没有使用RVM。我用'apt-get install ruby​​1.9.1' – Oakland510

回答

2

您可能需要检查路径,看起来它使用的是1.8版本的Ruby可执行文件。当你升级时,你可能需要重新安装宝石。这种情况是rvm是安装ruby的首选方式的原因之一。

1

你应该发布你怀疑有罪的代码,很难回答这么一点线索。

关于新风格的一个问题是,如果散列上的所有键都是符号,则只能使用它,这可能是问题。

+0

我用有罪代码更新了我的帖子。我不确定这条线是否是问题。当我删除它时,我只是得到另一个散列造成的下一个错误。 – Oakland510

+0

@DGM是正确的,你需要在安装新的ruby包之前正确地删除以前的ruby包。而且他对rvm也是对的。 –