【问题标题】:How to enable Rubocop with Syntastic Vim plugin and Rbenv?如何使用 Syntastic Vim 插件和 Rbenv 启用 Rubocop?
【发布时间】:2014-11-23 23:20:45
【问题描述】:

我想使用 Syntastic 启用 Rubocop 检查器。我已经设置它有一个检查器并给出了可执行文件的路径。尽管: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

编辑:基于 cmets,我发现了部分解决方法。可以使用命令行参数调用 RBENV shim 以指定 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 值以成功删除警告消息。这仍然不能为 Syntastic 启用 Rubocop。 :SyntasticCheck rubocop 仍然报告syntastic: warning: checker rubocop is not available

【问题讨论】:

    标签: ruby vim syntastic rubocop


    【解决方案1】:

    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 显示的任何路径。

    【讨论】:

    • 这听起来像是解决方案,但我们还没有完全做到。将 rubocop 路径传递给 ruby​​ 垫片不起作用。它尝试将其作为 ruby​​ 脚本运行。
    • 如果我设置项目的完整路径,它确实有效。你能想出一种方法来使这个通用性足以不仅适用于单个项目吗?
    • 您可以使用gem install rubocop 全局安装rubocop,然后应该可以在/Users/jjasonclark/.rbenv/shims/rubocop 获得它
    • 先试过了。全局安装会导致 ruby​​ 版本发生变化,从而在 --version 调用时创建警告消息。如果有任何警告,则 Rubocop 不能用作检查器。
    • 我希望我当前的 ruby​​ 确定要使用哪个 ruby​​ 可执行文件...类似于let g:syntastic_ruby_mri_exec = system("rbenv which ruby")
    猜你喜欢
    • 2017-12-29
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2013-11-30
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    相关资源
    最近更新 更多