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忽略特定的目录或文件

Rubocop:是不是可以向 Metrics/AbcSize cop 添加排除项?

Rspec / DescribeClass上的Rubocop错误

sh Rubocop SH

json Rubocop

json Rubocop