Как включить Rubocop с плагином Syntastic Vim и Rbenv?

Я хотел бы включить средство проверки Rubocop с помощью Syntastic. Я установил для него проверку и указал путь к исполняемому файлу. Хотя :SyntasticInfo сообщает, что это не активная проверка. Также :SyntasticCheck rubocop сообщает, что 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 для Syntastic. :SyntasticCheck rubocop все еще сообщает syntastic: warning: checker rubocop is not available


person Jason    schedule 23.11.2014    source источник


Ответы (1)


Syntastic загружает неправильную версию Ruby. В командной строке введите ruby -v && which ruby.

Теперь измените вторую строку настроек на:

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

Используя любые пути which ruby и which rubocop, которые вам покажут.

person Dan Kohn    schedule 24.11.2014
comment
Звучит как решение, но мы еще не совсем там. Прохождение пути рубокопа к рубиновой прокладке не работает. Он пытается запустить его как скрипт ruby. - person Jason; 25.11.2014
comment
Это сработает, если я укажу полный путь к своему проекту. Можете ли вы придумать способ сделать это достаточно универсальным, чтобы работать не только с одним проектом? - person Jason; 26.11.2014
comment
Вы можете установить rubocop глобально с помощью gem install rubocop, и тогда он должен быть доступен на /Users/jjasonclark/.rbenv/shims/rubocop - person Dan Kohn; 26.11.2014
comment
Пробовал первым. Глобальная установка приводит к изменению версии ruby ​​и, таким образом, к созданию предупреждающего сообщения при --version вызовах. Если есть какие-либо предупреждения, значит, Rubocop недоступен в качестве средства проверки. - person Jason; 26.11.2014
comment
Я бы хотел, чтобы мой текущий рубин определял, какой исполняемый файл рубина использовать ... что-то вроде let g:syntastic_ruby_mri_exec = system("rbenv which ruby") - person rthbound; 31.12.2016