Ruby プラグインをインストールしただけの IntelliJ IDEA では、たとえば Vagrantfile のここが文法エラーになります:
config.vm.network "private_network", ip: "192.168.33.10"
エラーを放置するとコードフォーマッターで文法を壊されます。とくにRubyはスペースあけるあけないで変わってくるので。
これは Ruby1.8 にない文法ゆえに出ている、というのがわかればこう書き換えればいいのですが:
config.vm.network "private_network", { :ip => "192.168.33.10" }
なんでこんな変更したのか意味わかりませんね。負けた気になります。
Ruby プラグインは、Ruby SDK が指定されているモジュール以下のファイルでないと、文法バージョンを指定できません。指定できなかったときのデフォルトは 1.8 になります。エー (´Д`)
強引な方法としては、プロジェクトのルートを Ruby モジュールとして定義し、そのモジュールが使用する Ruby SDK に、1.9 以上のものを指定します。たとえPHPのプロジェクトだろうとPythonのプロジェクトだろうと、ルートモジュールの種類を Ruby にしてしまうという...
PythonやPHPとは競合が起こらないので動くんですが、これも負けた気になります。
別の解決策として、JRuby ファセットが使えます。
- rbenv などで jruby の最新版をインストール
-
⌘ + ;
で出てくる SDKs に JRuby SDK として ~/.rbenv 以下のパスを追加 - このとき JRuby SDK の Language Level が 1.8 なのを 1.9 以上に修正
- Modules でルートモジュールを右クリックして JRuby フレームワークを追加
- Language Level >= 1.9 の JRuby SDK を選択
これで、PHP とか Java とか Python とか、そういうのがルートに来てるプロジェクトでも、Vagrantfile の文法などに Ruby 1.9 が使えるようになります。