Bundler正在使用为不同的gem创建的binstub。

时间:2015-02-06 23:24:36

标签: ruby-on-rails ruby bundler

当我使用

运行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碰巧是我创建的一个宝石,它完全不相关,在当前项目目录中没有使用。

我已经尝试过这个问题的每个解决方案而没有运气: Bundler is using a binstub that was created for a different gem

我将非常感谢有关删除此警告或帮助了解binstub如何工作的任何指导,以便我可以弄清楚发生了什么。

2 个答案:

答案 0 :(得分:5)

现在,对于拥有"专业化的项目来说,这是很常见的。工具版本。例如。在某些项目中," rails"命令可能会使用" spring" (开始更快)。

因此,在您的项目中生成文件的情况并不少见[&b;目录,然后在运行命令时使用这些版本,例如而不是

bundle exec rails console

bundle exec spring rails console

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

bin/rails console

并不关心项目是否需要春天或捆绑或宙斯或其他什么。

所以,如果你没有“bin / rails'在您的项目中,您应该生成一个适合项目的项目,例如:使用

bin/rake rails:update:bin

如果您还没有bin / rake,则可能需要使用

bundle exec rake rails:update:bin

(所以你的bin / rake命令也会因使用spring而加速)

有些人甚至将./bin放在他们的路径中,因此每当他们运行rake(或其他)时,如果它们存在,则./bin/rake实际运行。{/ p>

疑难解答

  1. 针对项目特定任务,使用bin/*文件,根据需要创建它们(例如使用Rails中的特殊rake任务或使用bundle binstub <gemname>) - 通常那些具有Bundler特定行的Bundler很高兴。

  2. 对于非项目宝石(例如您的宝石),找出它的位置(例如which mygem)并查看它的内容 - 它可能正在使用,例如&#34;捆绑/设置&#34;这让Bundler感到困惑(因为bundler需要一个本地的Gemfile文件)。也许你的宝石正在使用捆绑器(如果它不是&#34;全球&#34;那种工具而不是&#34;项目&#34;工具)。

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

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

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

答案 1 :(得分:-1)

这发生在我的一个项目中。因为我用另一个ruby版本运行bundle install

确保您的rvm是正确的红宝石版本。