Ruby 使'rake test'自动调用'bundle exec rake test'

Ruby 使'rake test'自动调用'bundle exec rake test',ruby,bundler,Ruby,Bundler,MyRakefile需要与bundler一起安装的某些依赖项。因此,运行我的Rakefile的正确方法是使用bundle exec rake 然而,我相信有一天会有人意外地使用rake运行它。因此,我们在顶部添加了: abort('fatal: Please run this using `bundle exec rake`') unless ENV["BUNDLE_BIN_PATH"] 但是,如果脚本改为使用任何附加命令行参数将自身重新运行为bundle exec rake,则会更有帮助。我

My
Rakefile
需要与bundler一起安装的某些依赖项。因此,运行我的
Rakefile
的正确方法是使用
bundle exec rake

然而,我相信有一天会有人意外地使用
rake
运行它。因此,我们在顶部添加了:

abort('fatal: Please run this using `bundle exec rake`') unless ENV["BUNDLE_BIN_PATH"]
但是,如果脚本改为使用任何附加命令行参数将自身重新运行为
bundle exec rake
,则会更有帮助。我该怎么做?如果未安装捆绑机时,捆绑机正常故障,则可获得额外积分。

使用:

  • 在项目根目录中运行bundle binstubs rake
  • 使用
    bin/rake
    代替
    rake
  • 您不再需要担心在执行命令之前键入
    bundle exec
    。无需在命令行上手动调用任何内容,即可完成所需的任何设置。您可以轻松地修改binstub文件,并且它是特定于项目的


    最后,如果键入
    bin/rake
    实在太多,您可以使用更短的别名,例如
    brake
    ,或者如果您想生活在边缘,
    可以使用别名rake='bin/rake'

    我认为@coreyward有答案,但是如果你陷入困境,你总是可以
    别名rake='bundle exec rake'
    ,但那可能会让你在以后的某一天陷入麻烦。

    这不是答案,但从来没有一个好的理由
    bundle exec
    。研究使用RVM或rbenv和Gemset,你的生活会轻松得多。@JimStewart如果你喜欢逆流而上,Ruby可能不适合你。甚至你推荐的ruby管理者也不同意你的观点。@JimStewart感谢你分享这个有争议的想法。你能给我指出一个更好的起点来了解这一点吗?说得清楚一点,我有兴趣帮助其他管理我项目的人。因此,更改我的工作流的答案不会帮助希望运行此项目的人。