【问题标题】:Setup rubocop with rubymine and docker使用 ruby​​mine 和 docker 设置 rubocop
【发布时间】:2021-05-24 14:18:16
【问题描述】:

我在 docker 上运行一个 rails 应用程序,我现在想启用 rubocop,但是当我尝试启用时,我得到了以下信息。

Error:bundler: failed to load command: rubocop 
(/Users/name/.rbenv/versions/3.0.1/bin/rubocop)
/Users/name/.rbenv/versions/3.0.1/lib/ruby/3.0.0/bundler/spec_set.rb:41:in `block in for': 
Unable to find a spec satisfying nokogiri (>= 1.8.5) in the set. Perhaps the lockfile is 
corrupted? Found nokogiri (1.11.4-x86_64-linux) that did not match the current platform.

在容器内我得到以下内容

ruby -v
ruby 3.0.1p64 (2021-04-05 revision 0fb782ee38) [x86_64-linux]
which bundler
/usr/local/bundle/bin/bundler

在我机器上的容器外

ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
which bundler
/usr/bin/bundler

据我了解,rubocop 在容器安装的 gem 上查找 nokogiri,因此找不到正确的版本,我可以安装另一个 nokogiri gem 以从容器外部的 rubocop 使用吗?

【问题讨论】:

    标签: ruby-on-rails docker rubocop


    【解决方案1】:

    RuboCop 对 nokogiri 没有任何依赖关系,所以感觉就像当 bundler 尝试运行 rubocop 时,它报告了一个更普遍的问题。

    初始错误消息中的/Users/name/.rbenv/versions/3.0.1/ 路径是容器内的路径还是本地计算机上的路径?对我来说,它看起来像后者——这意味着您的本地 rbenv Ruby 3.0.1 副本可能没有您的应用程序和 RubyMine 基于项目的 Gemfile 所期望的全套 gem。

    在 RubyMine 的设置中,您可以将项目设置为使用您的容器(首选项 > 语言和框架 > Ruby SDK 和 Gems)。如果您的 Rails 应用程序在容器中运行,您可以创建一个远程 SDK,RubyMine 将同步相同 gem(包括 RuboCop)的本地副本以供自己使用。

    过去我在使用 RubyMine 的同步 gem 时遇到过各种问题,有时我会改用本地基于 rbenv 的 Ruby 环境。但是,如果您走这条路,则意味着您必须自己维护该 Ruby 版本的 gemset,这意味着您将失去使用 docker 容器进行开发的许多好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多