看似很简单的问题,想知其所以然,希望得到解答
简单回答
gemfile
gemfile.lock
默认 bundle install 就装在 ruby 所在的目录了,例如 ~/.rvm/gems/ruby-2.1.5/gems/rspec-rails-3.2.1
~/.rvm/gems/ruby-2.1.5/gems/rspec-rails-3.2.1
删了 lock 后,bundle install 会先从本地已经安装的 gem 找本地最新版本来依赖。
gem install 之后,bundle install 会复用,不会重新安装。
以上所有行为都是默认情况下,基本上都可以指派参数来调整缺省行为。
#1 楼 @foxzool 那$GEM_HOME 这个环境变量是这哪设定的呀? #2 楼 @lyfi2003 针对 2 的回答,如果本地的版本落后与 source 的版本,那么 bundle install 岂不是安装的不算是最新的版本?
#3 楼 @answer 是的,只有 bundle update 才会更新最新的。关于这点 #1 楼 @foxzool 回复是不对的。
#4 楼 @lyfi2003 好的,感谢
#3 楼 @answer 2 的前提是,你已经删了 gemfile.lock , 并且 gemfile 没有指定版本
@foxzool 是这样的,不过 #2 楼 意思是只有 bundle update 才会从 source 安装最新版本,而 bundle install 是先从本地已经安装的 gem 找本地最新版本
若你想查看当前项目的某个 gem 包安装位置:bundle show gem_name 若你想单独更新一个 gem 包,而不像修改 gemfile 和 gemfile.lock:bundle update gem_name
bundle show gem_name
bundle update gem_name