

Mac(Yosemite)でrubocopを使用したいと思ってます。

$ rubocop <ファイル名>

であれば、シンタックスチェックができます。

ただ、vimの中で、保存後のシンタックスチェックができないという問題です。

以下は作業履歴です。

=======================================================

以下の記事を参考にvimrcにrubocopを追加しました。  
<http://qiita.com/yuku_t/items/0ac33cea18e10f14e185>

※ruby 2.2.1の環境下でやってます。事情があって、rubyはこのバージョンで固定しております。

[code]

    NeoBundle 'scrooloose/syntastic'
    let g:syntastic_mode_map = { 'mode': 'passive',
                \ 'active_filetypes': ['ruby'] }
    let g:syntastic_ruby_checkers = ['rubocop']
    
[/code]

しかし、以下の様なエラーが出ました。

[code]

    syntastic: error: checker output:
    warning: you are loading parser/ruby22 from ~/.rbenv/versions/2.2.1/lib/ruby/2.2.0/rubyge
    ms/core_ext/kernel_require.rb:69:in `require'.
    warning: Ruby 2.2 is not released yet and parser support may be incomplete.
    0.26.1
    syntastic: error: checker ruby/rubocop: can't parse version string (abnormal termination?)
    
    
[/code]

そこで、以下の記事を参考に、バージョンを落としました。  
<http://qiita.com/ka2n/items/55a435c10a240ea5d434>

parser: 2.2.0.pre.5  
Rubocop: 0.26.1

しかし、まだ、以下のようなエラーがでており、これ以上わかりませんでした。

[code]

    warning: parser/current is loading parser/ruby22, which recognizes
    warning: 2.2.3-compliant syntax, but you are running 2.2.1.
    warning: please see https://github.com/whitequark/parser#compatibility-with-ruby-mri.
    0.35.1
    
[/code]

調べていると、rubocopは最新版でないと、動作しないという記事を見かけましたが、  
2.2.1では動作できないということでしょうか？

宜しくお願いします。


CC BY-SA 3.0
2015-12-07T01:23:14.073
19693
2016-03-07T03:52:01.590
13175
question
ruby-on-rails ruby rubygems
ruby2.2.1でrubocopが入りませんでした。checker ruby/rubocop: can't parse version string (abnormal termination?)


  * [Rails - rubocopしたらparserの設定でwarningでた。 - Qiita](http://qiita.com/noripeex/items/2183154fb57bdb28f5e9)

Qiita の記事を参考に、エラーを吐かずに動作するparser gem(rubocop の依存gem)のバージョンを調べてみました。  
Ruby 2.2.1 とRubocop が対応するparser gem のバージョンは 2.2.0.1 のようです

# 手順記録

  * `bundle init` し、rubocop(バージョン指定なし), parser(バージョン指定あり)で記述
  * 適当な`.rb`ファイルをvim で開き、保存操作。動作の確認。
  * エラーが出れば、`gem uninstall rubocop parser ast;gem cleanup;`し、parser gem のバージョン指定を下げて、`bundle update`

これで、`bundle exec` をしなくても、エラー無く動作するgem の組み合わせが作れます。

Gemfile :

[code]

    source 'https://rubygems.org'
    
    gem 'rubocop'
    gem 'parser', '2.2.0.1'
    
[/code]

Gemfile.lock に記録されているバージョンの関係は以下のようになりました:

[code]

    GEM
      remote: https://rubygems.org/
      specs:
        ast (2.1.0)
        astrolabe (1.3.1)
          parser (~> 2.2)
        parser (2.2.0.1)
          ast (>= 1.1, < 3.0)
          slop (~> 3.4, >= 3.4.5)
        powerpack (0.1.1)
        rainbow (2.0.0)
        rubocop (0.30.0)
          astrolabe (~> 1.3)
          parser (>= 2.2.0.1, < 3.0)
          powerpack (~> 0.1)
          rainbow (>= 1.99.1, < 3.0)
          ruby-progressbar (~> 1.4)
        ruby-progressbar (1.7.5)
        slop (3.6.0)
    
    PLATFORMS
      ruby
    
    DEPENDENCIES
      parser (= 2.2.0.1)
      rubocop
    
    BUNDLED WITH
       1.10.6
    
[/code]


CC BY-SA 3.0
2015-12-07T16:07:13.827
19730
2015-12-07T16:14:04.960
2015-12-07T16:14:04.960
3861
3861
19693
answer