0

我通过 rvm 安装了 ruby​​ 1.9.3。但是如果出现错误,我会收到以下形式的消息

/home/railstest/vendor/bundle/ruby/1.9.1/gems/activerecord-3.1.0
/lib/active_record/base.rb:1082:in `method_missing': undefined method
`mass_assignment_sanitizer=' for ActiveRecord::Base:Class (NoMethodError)

问题是:这个 1.9.1 代表什么?似乎是 ruby​​ 版本,但我的是 1.9.3。这是否意味着以某种方式调用 ruby​​ 1.9.1 而不是 1.9.3?

rvm 列出以下内容:

rvm list

rvm rubies

=* ruby-1.9.3-p392 [ x86_64 ]

# => - current
# =* - current && default
#  * - default
4

3 回答 3

2

您的路径中有 1.9.1 的事实并不意味着您使用的是 ruby​​ 1.9.1 - 它是 Ruby 兼容版本。

于 2013-03-21T16:17:56.920 回答
1

路径中的版本组件没有指定使用的确切 Ruby 版本,而是指定了“库兼容版本”。这表明 Ruby 版本 1.9.1、1.9.2 和 1.9.3 的库 API 足够相似,以至于它们可以(理论上)共享相同的 gem。

实际的 Ruby 版本可能与该路径组件不同。Yopu 可以通过运行检查 ruby​​ 版本

ruby --version
于 2013-03-21T17:12:38.607 回答
0

可能您没有激活该版本。

使用以下命令激活您的版本。

rvm use 1.9.3

要将此版本设置为默认值,请运行

rvm use --default 1.9.3
于 2013-03-21T15:57:20.070 回答