Bundler的作用是创建一个与底层主机系统分离的,有点孤立的Ruby语言编程环境。它可以做的事情有局限性。例如,您需要诸如RVM之类的东西来管理Ruby语言虚拟机的不同版本。当然,Ruby和Bundler本身都必须在项目外部可用才能运行。
但是,在单个项目中,bundle exec将限制对Bundler安装到该项目中的gem的访问。这意味着当通过bundle exec调用Rake实用程序时,它将是项目中安装的rake的版本,而不是系统范围的版本。这也意味着`bundle rake db:migrate'将使用为您的项目安装的正确版本的rails。这样可以将您的项目与对主机上Ruby环境所做的更新隔离开,从而防止出现兼容性问题。
您可以通过在.bash_profile中创建别名(假设您使用的是OSX或Linux / unix)来表示冗长,以防止bundle exec,bundle exec rake和bundle exec rails。我使用bexec,brake和brails。