我的系统中的 ruby 文件中出现语法错误,尽管其他系统中没有这些错误。
错误在代码中,例如:
1)redirect_to :back, alert: exception.message
语法错误在alert
2)load_and_authorize_resource only: [ :update, :destroy ]
语法错误在only
3)render json: @reward.to_json
语法错误在json
像这样有很多错误。
我通过对上述内容进行以下更改来消除这些错误:
1)redirect_to :back, :alert => exception.message
2)load_and_authorize_resource :only => [ :update, :destroy ]
3)render :json => @reward.to_json
似乎错误是由于 ruby 版本引起的,但我不确定正确的原因是什么?
我需要在每个现有项目中进行所有这些更改,这非常痛苦。
这是否意味着项目正在使用旧的 ruby 语法,或者这是否意味着我安装了旧的 ruby 版本?
我的红宝石版本是ruby 1.9.2p180
此外,如果它的 ruby 版本问题比 ruby 升级到最新版本会影响整个项目,如何轻松完成?
更新:
我确认我的 ruby 版本是ruby 1.9.2p180
因为以下原因:
D:\ruby_work>ruby -v
ruby 1.9.2p180 (2011-02-18) [i386-mingw32]
D:\ruby_work>pik list
187: ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-mingw32]
* 192: ruby 1.9.2p180 (2011-02-18) [i386-mingw32]
上面的星号(*)表示我当前使用的版本。
确切的错误例如是 redirect_to :back, :alert => exception.message
-
, unexpected ':'
更新:
现在我做到了——
D:\ruby_work>pik use 187
D:\ruby_work>pik list
* 187: ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-mingw32]
192: ruby 1.9.2p180 (2011-02-18) [i386-mingw32]
D:\ruby_work>ruby -v
ruby 1.8.7 (2010-06-23 patchlevel 299) [i386-mingw32]
错误仍然存在。现在我怀疑这真的是一个 ruby 错误,因为更改为旧的 ruby 版本也显示相同的语法错误。唯一的区别是,现在即使从:key
to更改key =>
也显示相同的错误。