Atom-Editor:Rubocop 不适用于 atom
Posted
技术标签:
【中文标题】Atom-Editor:Rubocop 不适用于 atom【英文标题】:Atom-Editor: Rubocop doesn't work with atom 【发布时间】:2017-09-14 16:58:48 【问题描述】:我试图将 rubocop 连接到 atom,但收到错误:
linter-registry.js [sm]:144 [Linter] Error running RuboCop Error: /usr/lib/ruby/2.3.0/rubygems/dependency.rb:319:in `to_specs': Could not find 'rubocop' (>= 0.a) among 16 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/home/kurilovichay/.rvm/gems/ruby-2.3.1:/home/kurilovichay/.rvm/gems/ruby-2.3.1@global', execute `gem env` for more information
from /usr/lib/ruby/2.3.0/rubygems/dependency.rb:328:in `to_spec'
from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_gem.rb:65:in `gem'
from /usr/local/bin/rubocop:22:in `<main>'
at parseFromStd (/home/kurilovichay/.atom/packages/linter-rubocop/src/index.js:41:43)
at Object.<anonymous> (/home/kurilovichay/.atom/packages/linter-rubocop/src/index.js:212:27)
at next (<anonymous>)
at step (/home/kurilovichay/.atom/packages/linter-rubocop/src/index.js:11:273)
哪个 rubocop 返回:
/usr/local/bin/rubocop
有人可以帮忙吗?
【问题讨论】:
您是否在应用程序中添加了 gem rubocop? 我刚刚做了这个gem install rubocop
听起来像是一个拙劣的安装。
【参考方案1】:
您似乎正在使用 rvm 来管理您的环境。我所做的就是按照他们回购的说明进行操作:https://github.com/AtomLinter/linter-rubocop#settings
# make sure I'm in the global gemset
$ rvm gemset use global
# install the gem
$ gem install rubocop
配置 atom 使用全局。编辑 atom 的配置文件 (config.cson
) 并添加
*:
"linter-rubocop":
executablePath: "~/.rvm/gems/ruby-2.3.1@global/wrappers"
"linter-ui-default":
注意:确保您使用的是 ruby 版本。
【讨论】:
@rpbaltazar 这个解决方案的问题是您被锁定在 Ruby 版本中。是否有允许任何 rvm ruby 版本使用相同的 rubocop 二进制文件的解决方案?这样,您就不需要在 linter 中设置特定路径。 linter 查找的默认路径似乎是 /usr/local/bin/rubocop?也许以某种方式安装它或 syslink? @JCC 关于被锁定,您是完全正确的。那是我当时对我的配置所做的修复,但我已经停止使用 Atom,所以我不再使用它了。我的观点是 rubocop lint 应该选择在其正在执行的路径中加载的任何 gemset,如果没有,则默认为默认 gemset。不确定当前状态如何,但您可能值得尝试全局安装 rubocop (pennyforyourcode.com/…) 并删除我在评论中提到的可执行路径。 感谢关于@global 选项的博客链接。不幸的是,我之前的评论是在完全了解此选项的情况下发表的。例如,全局选项,您可以拥有 ruby-2.5.1=>(默认)全局的 gemsets 和 ruby-2.6.3=>(默认)全局的 gemsets。每个 ruby 版本都有自己的一组 gemset,全局将在每个版本中安装它,并且可用于您在每个 ruby 版本中创建的任何 gemset。那有意义吗?这意味着每次切换 ruby 版本时,我们仍然需要更改 linter 上的路径。【参考方案2】:我在 Ubuntu 20.04 中使用 rbenv 作为我的 ruby 版本管理器的 Rails 6 应用程序时遇到了同样的问题。
我已经在项目中安装了 rubocop,但是 Atom 编辑器仍然抛出这个错误。
我所要做的就是安装 rubocop gem 以在机器上全局可用。打开一个新终端并使用以下命令安装它:
gem install rubocop
就是这样。
我希望这会有所帮助
【讨论】:
以上是关于Atom-Editor:Rubocop 不适用于 atom的主要内容,如果未能解决你的问题,请参考以下文章
Rubocop:是不是可以向 Metrics/AbcSize cop 添加排除项?