joh*_*ino 4 ruby ruby-on-rails bundler
当我使用rails控制台时
rails console
Run Code Online (Sandbox Code Playgroud)
一切都好.
当我使用rails控制台时
bundle exec rails console
Run Code Online (Sandbox Code Playgroud)
我收到以下警告
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.
Run Code Online (Sandbox Code Playgroud)
my_gem 碰巧是我创建的一个宝石,它完全不相关,在当前项目目录中没有使用.
我已经尝试过这个问题的每个解决方案都没有运气: Bundler正在使用为不同的gem创建的binstub
我将非常感谢有关删除此警告或帮助理解binstub如何工作的任何指导,以便我可以弄清楚发生了什么.
如今,项目通常具有"专用"版本的工具.例如,在某些项目中,可能希望使用"spring"运行"rails"命令(以更快地启动).
因此,在项目的'bin'目录中生成文件并在运行命令时使用这些版本并不罕见,所以例如而不是
bundle exec rails console
Run Code Online (Sandbox Code Playgroud)
要么
bundle exec spring rails console
Run Code Online (Sandbox Code Playgroud)
您可以简单地期望以下内容正常工作
bin/rails console
Run Code Online (Sandbox Code Playgroud)
而不关心项目是否需要春天或捆绑或宙斯或其他什么.
因此,如果项目中没有"bin/rails",则应生成适合项目的项目,例如使用
bin/rake rails:update:bin
Run Code Online (Sandbox Code Playgroud)
如果您还没有bin/rake,则可能需要使用
bundle exec rake rails:update:bin
Run Code Online (Sandbox Code Playgroud)
(所以你的bin/rake命令也会因使用spring而加速)
有些人甚至放入./bin他们的路径,所以无论何时他们运行rake(或其他),./bin/rake如果它存在,他们实际上运行.
对于项目特定任务,使用bin/*文件,在需要时创建它们(例如使用Rails中的特殊rake任务或使用bundle binstub <gemname>) - 通常那些具有Bundler特定线路的Bundler将使Bundler满意.
对于非项目宝石(比如你的宝石),找出它的位置(例如which mygem)并查看它的内容 - 它可能正在使用例如"bundler/setup",这使Bundler感到困惑(因为bundler需要一个本地的Gemfile文件).也许你的宝石正在使用捆绑器(如果它是一种"全局"工具而不是"项目"工具则不应该).
此外,如果您正在使用它们,请检查RVM和.rbenv等工具是否正确地将其内容添加到您的bin文件中(它们通常需要设置特定路径)
如果你仍然有问题,最好发布bin文件的内容导致问题 - 这是一个普通的Ruby文件,所以如果有什么问题,通常是因为文件内容(而不是其他任何东西).
更多信息:https://github.com/sstephenson/rbenv/wiki/Understanding-binstubs
| 归档时间: |
|
| 查看次数: |
2906 次 |
| 最近记录: |