启动 Rails 服务器时出现语法错误,可能是 RVM 的问题吗?

启动 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 list known”将会失败,因此我对其进行了测试:

**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)。

我有点不知道该尝试什么,如果能提供建议我将非常感激!

答案1

问题出在系统环境。

包括我自己在内,每个人都没有查看完整的错误日志。查看后发现他使用的是 Passenger,并且正在从 1.8 版本加载 gem。

进一步调查显示,RVM 是作为系统范围的安装加载的。因此,将 1.9.3 设置为系统默认值,然后重新安装 Passenger 组件,然后安装 apache2 模块,然后更新 apache 配置,问题就解决了。

这个盒子专门用于那个应用程序,上面的修复应该不是问题。如果您最终运行更多 rails 应用程序并需要更严格定义的环境,请阅读此文档http://beginrescueend.com/integration/passenger/。这将允许您为每个应用程序创建一个 gemset。我不确定它如何与不同的 ruby​​ 版本一起工作,因为乘客仍然必须从单个 ruby​​ 安装中加载,但它可能能够以不同的 ruby​​ 版本运行脚本?

答案2

我认为您的 session_store.rb 中存在语法错误。

看一下示例这里

因此,您可能想要类似这样的东西,而不是您拥有的东西:

Intranet::Application.config.session_store :cookie_store, :key => '_intranet_session'

相关内容