gpt4 book ai didi

ruby-on-rails - Bundler 正在使用为不同的 gem 创建的 binstub。

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

当我使用 运行 Rails 控制台时

rails console

一切都很好。

当我使用 运行 Rails 控制台时

bundle exec rails console

我收到以下警告

Bundler is using a binstub that was created for a different gem.
This is deprecated, in future versions you may need to `bundle binstub my_gem` to work around a system/bundle conflict.

my_gem 恰好是我创建的一个 gem,它完全不相关并且没有在当前项目目录中使用。

我已经尝试了这个问题的所有解决方案,但没有成功: Bundler is using a binstub that was created for a different gem

我将不胜感激有关删除此警告的任何指导或帮助理解 binstub 的工作原理以便我弄清楚发生了什么。

最佳答案

如今,项目拥有“专业”版本的工具是很常见的。例如。在某些项目中,“rails”命令可能需要使用“spring”运行(以更快地启动)。

因此,在项目的“bin”目录中生成文件并在运行命令时使用这些版本的情况并不少见,例如而不是

bundle exec rails console

bundle exec spring rails console

您可以简单地期望以下内容能够正常工作

bin/rails console

而不关心项目是否需要 spring 或 bundler 或 zeus 或其他什么。

因此,如果您的项目中没有“bin/rails”,您应该生成一个适合该项目的,例如使用

bin/rake rails:update:bin

如果您还没有 bin/rake,您可能必须使用

bundle exec rake rails:update:bin

(因此您的 bin/rake 命令也将通过使用 spring 获得加速)

有些人甚至把./bin在他们的路径中,所以每当他们运行rake (或其他)他们实际上正在运行 ./bin/rake如果存在的话。

疑难解答

  1. 对于项目特定任务,请使用 bin/*文件,根据需要创建它们(例如,使用 Rails 中的特殊 rake 任务或使用 bundle binstub <gemname> )——通常这些文件具有 Bundler 特定的行,这将使 Bundler 满意。

  2. 对于非项目 gem(比如您的 gem),找出它的位置(例如 which mygem )并检查它的内容 - 它可能使用例如“bundler/setup”混淆了 Bundler(因为 bundler 需要一个本地 Gemfile 文件)。也许您的 gem 正在使用 bundler (如果它是一种“全局”工具而不是“项目”工具,则不应使用)。

  3. 此外,如果您正在使用它们,请检查 RVM 和 .rbenv 等工具是否正确地将它们的内容添加到您的 bin 文件中(它们通常需要设置特定路径)

  4. 如果您仍有疑问,最好发布导致问题的 bin 文件的内容 - 它应该是一个普通的 Ruby 文件,所以如果有问题,通常是因为文件内容(而不是其他任何东西)。

更多信息:https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs

关于ruby-on-rails - Bundler 正在使用为不同的 gem 创建的 binstub。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28376558/

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