gpt4 book ai didi

带有 "debugger"gem 的 RubyMine 6.0.2 没有修改 Gemfile.lock?

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:04 26 4
gpt4 key购买 nike

我正在使用 RubyMine (v6.0.2),但我的队友没有,所以他们需要 gemfile 中的“调试器”gem。我可以在运行 RubyMine 时有条件地取消要求 Gemfile(因此 Gemfile 可以共享和相同),但是由于不包括“调试器”gem,因此 Gemfile.lock 文件会根据项目上次是使用 RubyMine 运行还是不是。这会在冗余的 Gemfile.lock 更改中产生大量噪音。

我试过使用 'debugger-xml' gem;这并不能解决问题。

那么——我如何运行 RubyMine 6.0.2,在 Gemfile 中使用“调试器”gem,而不更改 Gemfile.lock?

最佳答案

我一直在 table 的另一边处理这个问题。我使用调试器 gem,但有使用 RubyMine 的队友。

我们讨论了几种可能的解决方案,但它们都涉及 Gemfile 中的条件检查,这将导致修改 Gemfile.lock。

我在谷歌上搜索了一个更好的解决方案并找到了这个 SO 帖子:How to use gems not in a Gemfile when working with bundler?

结合其中的一些答案,我想出了这个解决方案:

  1. 从 Gemfile 中删除调试器 gem。
  2. 使用以下内容创建一个 Gemfile.local。
  3. 如果使用 git,请将 Gemfile.local 添加到 .gitignore 文件。
  4. 创建函数和 shell 别名。
  5. $ 启动 rails be rails s

这一切是如何运作的!

Bundler 默认使用名为 Gemfile 的文件,但可以通过指定 BUNDLE_GEMFILE 环境变量来覆盖此行为。 Bundler 将使用/创建与 BUNDLE_GEMFILE 同名的锁文件。

shell 函数 __bundle_exec_custom 将检查 CWD 中是否有 Gemfile.local 文件。如果存在,则设置并使用 BUNDLE_GEMFILE 变量。否则,将使用默认的 Gemfile。

这将允许开发人员使用他们想要的任何 gem 进行本地开发,而不必影响整个应用程序。

Gemfile.local:

source "https://rubygems.org"

gemfile = File.join(File.dirname(__FILE__), 'Gemfile')
if File.readable?(gemfile)
puts "Loading #{gemfile}..." if $DEBUG
instance_eval(File.read(gemfile))
end

gem 'debugger'

函数和 shell 别名:

__bundle_exec_custom () {
if [ -f Gemfile.local ]
then
BUNDLE_GEMFILE="Gemfile.local" bundle exec $@
else
bundle exec $@
fi
}

# Rails aliases
alias be='__bundle_exec_custom'

关于带有 "debugger"gem 的 RubyMine 6.0.2 没有修改 Gemfile.lock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20923175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com