Linux

啟動 Rails 伺服器時出現語法錯誤,RVM 可能是問題所在?

  • March 11, 2012

第一次嘗試在生產環境中啟動我的 Rails 應用程序時出現以下錯誤:

/var/www/railsapp/config/initializers/session_store.rb:3: syntax error, unexpected ':', expecting $end ...sion_store :cookie_store, key: '_intranet_session' ^

我已經讀到這可能是目前 ruby​​ 版本的問題,所以我安裝了 RVM 並更新了執行版本。

**root@rails ~#** ruby -v
ruby 1.8.7 (2010-04-19 patchlevel 253) [i686-linux], MBARI 0x8770, Ruby Enterprise Edition 2010.02
**root@rails ~#** rvm use 1.9.3
Using /usr/local/rvm/gems/ruby-1.9.3-p125
**root@rails ~#** ruby -v
ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux]

我注意到 Ruby 的生產版本是 1.9.3p125,但開發版本是 1.9.3p0,不確定這是否重要。

然後我仔細檢查了 Rails 版本是否正確:

**root@rails www/railsapp#** rails -v
Rails 3.1.4

我認為值得重新啟動伺服器,然後重新啟動應用程序只是為了傻笑,但這也無濟於事。

在閱讀其他一些問題時,我注意到如果未安裝 RVM,則執行“已知 rvm 列表”將失敗,因此我對其進行了測試:

**root@rails www/railsapp#** rvm list known
# MRI Rubies
[ruby-]1.8.6[-p420]
[ruby-]1.8.7[-p358]
[ruby-]1.8.7-head
[ruby-]1.9.1[-p431]
[ruby-]1.9.2-p180
[ruby-]1.9.2-p290
[ruby-]1.9.2[-p318]
[ruby-]1.9.2-head
[ruby-]1.9.3-preview1
[ruby-]1.9.3-rc1
[ruby-]1.9.3-p0
[ruby-]1.9.3[-p125]
[ruby-]1.9.3-head
ruby-head

# GoRuby
goruby

# TheCodeShop - MRI experimental patches
tcs

# JRuby
jruby-1.2.0
jruby-1.3.1
jruby-1.4.0
jruby-1.6.5
/usr/local/rvm/config/known

如果有幫助,我正在執行 Turnkey Linux Rails 設備(TurnKey Linux 11.3 / Ubuntu 10.04 Lucid LTS)。

我在嘗試什麼方面有點死胡同,我們將不勝感激!

問題出在系統環境上。

每個人(包括我自己)都沒有問過的是查看完整的錯誤日誌。這樣做表明他正在使用Passenger,它正在從1.8載入gem。

更多調查顯示 RVM 作為系統範圍的安裝載入。因此將 1.9.3 設置為系統預設值,然後重新安裝乘客 gem,然後安裝 apache2 模組,然後更新 apache 配置解決了這個問題。

這個盒子專用於那個應用程序,上面的修復應該不是問題。如果您最終執行更多的 Rails 應用程序並需要更嚴格定義的環境,請閱讀此文件http://beginrescueend.com/integration/passenger/。這將允許您為每個應用程序創建一個 gemset。我不確定它如何與不同的 ruby​​ 版本一起工作,因為仍然需要從單個 ruby​​ 安裝中載入乘客,但它可能能夠將腳本作為不同的 ruby​​ 版本執行?

引用自:https://serverfault.com/questions/368169