Linux
啟動 Rails 伺服器時出現語法錯誤,RVM 可能是問題所在?
第一次嘗試在生產環境中啟動我的 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 版本執行?