2014-11-23 53 views
3

我想用Syntastic啓用Rubocop檢查器。我已經設置它有一個檢查器,並給出可執行文件的路徑。雖然:SyntasticInfo報告說它不是活動檢查器。另外:SyntasticCheck rubocop報告rubocop不是可用的檢查器。如何使用Syntastic Vim插件和Rbenv啓用Rubocop?

我還需要其他設置嗎?這可能是由rubocop --version給出的警告信息引起的嗎?


的.vimrc設置

let g:syntastic_ruby_checkers   = ['rubocop', 'mri'] 
let g:syntastic_ruby_rubocop_exec  = '/Users/jjasonclark/.rbenv/shims/rubocop' 

rubocop警告消息

warning: parser/current is loading parser/ruby21, which recognizes 
warning: 2.1.5-compliant syntax, but you are running 2.1.2. 
0.26.0 

編輯:根據意見,我已經發現了部分解決方法。可以使用命令行參數調用RBENV墊片以指定Ruby版本。這適用於手動運行命令,但它不適用於Syntastic插件。我的猜測是,由於Rubocop關於解析器版本的警告消息,它不起作用。

let g:syntastic_ruby_rubocop_exec = 'RBENV_VERSION=2.1.2 /Users/jjasonclark/.rbenv/shims/rubocop' 

編輯:我安裝了Ruby 2.1.5和更新RBENV_VERSION值成功刪除了警告信息。這仍然不能啓用Rubocop for Syntastic。 :SyntasticCheck rubocop仍然報告syntastic: warning: checker rubocop is not available

回答

0

Syntastic正在加載錯誤版本的Ruby。在您的命令行中輸入ruby -v && which ruby

現在,更改設置到第二行:

let g:syntastic_ruby_rubocop_exec  = '/Users/jjasonclark/.rbenv/shims/ruby /Users/jjasonclark/yourprojectname/bin/rubocop' 

使用任何路徑which rubywhich rubocop告訴你。

+0

這聽起來像是解決方案,但我們還沒有完成。將rubocop路徑傳遞給紅寶石墊片不起作用。它試圖將其作爲ruby腳本運行。 – Jason 2014-11-25 18:24:36

+0

更正並更正。 – dankohn 2014-11-25 23:03:47

+0

如果我爲我的項目設置完整路徑,它確實有效。你能想出一種方法來使這種通用性不僅適用於單個項目嗎? – Jason 2014-11-25 23:34:38