我有一个运行在ruby 2.7.2上的rails应用,Gemfile中有以下内容:
group :development, :test do
gem 'rubocop'
gem 'rubocop-minitest'
gem 'rubocop-performance'
gem 'rubocop-rails'
end
运行bundle install
和bundle 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.
的情况下工作正常
2条答案
按热度按时间8oomwypt1#
我相信Rubocop的行为符合预期,问题在于您的linter如何调用Rubocop。
由于Rubocop是通过Bundler安装的,因此需要预先添加
bundle exec
才能运行本地版本。您需要告诉插件运行bundle exec rubocop
命令而不是rubocop
。您没有提到您使用的是哪个Vim linter,但是选择流行的ALE选项作为示例,您可以使用以下设置来覆盖默认的调用命令:
ALE在Ruby文档中提供了这个设置,更多信息在this GitHub issue中有记录。
如果您使用的是不同的linting工具,我会深入研究其文档,看看是否存在类似的配置。否则,您可能需要自己在插件的源代码中进行更改。
gxwragnw2#
bundle exec
是负责在Gemfile(具有特定版本)中运行确定的gem的命令如果没有它,您将运行系统的Rubocop(这是另一个版本),而您的项目也将无法运行