我只使用rake命令学习Rails,比如rake db:migrate
;然而,我读到我应该使用bundle exec rake ...
而不是普通的rake
.现在我不知道该用哪个.
我应该使用bundle exec rake
而不是普通的rake
,还是只是一种偏好?如有任何见解,将不胜感激!谢谢
我只使用rake命令学习Rails,比如rake db:migrate
;然而,我读到我应该使用bundle exec rake ...
而不是普通的rake
.现在我不知道该用哪个.
我应该使用bundle exec rake
而不是普通的rake
,还是只是一种偏好?如有任何见解,将不胜感激!谢谢
bundle exec
在包的上下文中执行命令.
这意味着它使用了GEM文件中指定的GEM.大多数情况下,运行bundle exec rake foo
的结果与运行rake foo
的结果相同,尤其是如果您在系统范围内安装了与GEM文件中相同的gems.然而,一些应用程序可能会指定不同于您在系统范围内安装的gems版本,并且可能希望这些gems和版本能够正确运行.如果你只是在没有bundle exec
的情况下 run ,你可能会出现一些奇怪的错误.
使用bundle exec
可以保证程序在gemfile中指定的环境下运行,这意味着程序的创建者希望它在这个环境中运行,这意味着无论你的计算机上有什么奇怪的设置,它都应该正确运行.
它基本上规范了程序运行的环境.这有助于避免版本地狱,让生活更轻松.