Atom 使用 rubocop 美化 Ruby 不起作用

Léo*_*cha 3 ruby ruby-on-rails atom-editor atom-beautify

我在 Atom 中安装了 Atom Beautify 插件,在我的应用中安装了 rubocop gem。即使经过这些步骤,美化也不起作用。

我的 rubocop 位置:

  $ which rubocop 
  /home/leonardo/.rbenv/shims/rubocop
Run Code Online (Sandbox Code Playgroud)

在我的 config.cson 我有代码:

...
    ruby:
      rubocop_path: "/home/leonardo/.rbenv/shims/rubocop"
...
Run Code Online (Sandbox Code Playgroud)

当我尝试使用美化(Ctrl+ Alt+ B)这个返回的错误:

Error: rbenv: rubocop: command not found
The `rubocop' command exists in these Ruby versions:
  2.4.3
    at /home/leonardo/.atom/packages/atom-beautify/src/beautifiers/executable.coffee:182:23
    at tryCatcher (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/util.js:16:23)
    at Promise._settlePromiseFromHandler (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/promise.js:512:31)
    at Promise._settlePromise (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/promise.js:569:18)
    at Promise._settlePromise0 (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/promise.js:614:10)
    at Promise._settlePromises (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/promise.js:693:18)
    at Async._drainQueue (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/async.js:133:16)
    at Async._drainQueues (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/async.js:143:10)
    at Async.drainQueues (/home/leonardo/.atom/packages/atom-beautify/node_modules/bluebird/js/release/async.js:17:14)
    at process._tickCallback (internal/process/next_tick.js:103:7)
Run Code Online (Sandbox Code Playgroud)

小智 6

我遇到了同样的问题。我的项目是在 2.2.2 版本上,并且 rubocop gem 安装在这个版本上。

Atom 正在运行atom-beautify,但使用全局rbenv版本(在我的例子中是 2.4.0),这导致了错误。所以解决方案是:

$ cd ~
$ rbenv version
2.4.0
$ gem install rubocop
Run Code Online (Sandbox Code Playgroud)

然后重新启动 Atom,运行atom-beautify,现在一切都应该好了。