0

自分のシステムの 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 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エラーなのではないかと思います。唯一の違いは、 から に変更し:keykey =>も同じエラーが表示されることです。

4

1 に答える 1

0

古いバージョンの Ruby は のハッシュ表記を理解していませんでしたがkey: value:key => value1.9 以降では理解できました。

新しい表記法がいつ追加されたかは覚えていませんが、古いバージョンでコードを実行できるようにするための修正は、元の表記法を使用することです。


Ruby 1.8.7 では、これは IRB を使用して発生するエラーです。

irb(メイン):001:0> foo = {a:'b'}
SyntaxError: コンパイル エラー
(irb):1: 構文エラー、予期しない tSYMBEG、kDO または '{' または '(' が必要です
foo = {a:'b'}
          ^
(irb):1: 構文エラー、予期しない '}'、$end が必要です
    (irb) から:1
irb(メイン):002:0> foo = {:a => 'b'}
=> {:a=>"b"}
于 2013-02-15T12:35:00.490 に答える