2011-11-05 66 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也是對的。 –