ruby 如何在没有bundle exec的情况下rubocop for rails?

3htmauhk  于 2023-05-22  发布在  Ruby
关注(0)|答案(2)|浏览(217)

我有一个运行在ruby 2.7.2上的rails应用,Gemfile中有以下内容:

group :development, :test do
  gem 'rubocop'
  gem 'rubocop-minitest'
  gem 'rubocop-performance'
  gem 'rubocop-rails'
end

运行bundle installbundle update。每当我在目录中运行rubocop时,我都会得到以下内容:

Could not find 'activesupport' (>= 4.2.0) among 220 total gem(s)

如果我运行bundle exec rubocop,一切正常。如果没有bundle exec部件,我该如何实现这一点?我在vim中运行一个linter,它只是调用没有bundle exec的可执行文件,所以我被卡住了。
有趣的是,我在ruby2.7.2上有一个不同的应用程序,在Gemfile中有相同的设置,它在没有前缀bundle exec.的情况下工作正常

8oomwypt

8oomwypt1#

我相信Rubocop的行为符合预期,问题在于您的linter如何调用Rubocop。
由于Rubocop是通过Bundler安装的,因此需要预先添加bundle exec才能运行本地版本。您需要告诉插件运行bundle exec rubocop命令而不是rubocop
您没有提到您使用的是哪个Vim linter,但是选择流行的ALE选项作为示例,您可以使用以下设置来覆盖默认的调用命令:

g:ale_ruby_rubocop_executable = 'bundle'

ALE在Ruby文档中提供了这个设置,更多信息在this GitHub issue中有记录。
如果您使用的是不同的linting工具,我会深入研究其文档,看看是否存在类似的配置。否则,您可能需要自己在插件的源代码中进行更改。

gxwragnw

gxwragnw2#

bundle exec是负责在Gemfile(具有特定版本)中运行确定的gem的命令
如果没有它,您将运行系统的Rubocop(这是另一个版本),而您的项目也将无法运行

相关问题