Gemfile的作用无非就是告诉bundler你的项目具体都需要哪些gem,这些gem都需要哪些版本,以及从哪获取这些gem。其实你的问题应该就是跟第三点有关,总的来说,gem的来源可以有四种:
1. 从镜像源安装
这个是最直接的,通过这种方式指定的gem,bundler会从文件开头的source
中去查找这个gem:
source 'https://rubygems.org'
gem 'rails' # this gem will be installed from https://rubygems.org
2. 从git代码库安装
通过在gem
方法(Gemfile实际上就是一个ruby的代码文件)中指定git
参数,可以使bundler从指定的远程代码库上拉取代码,比如:
# nokogiri will be installed from git://github.com/tenderlove/nokogiri.git
gem 'nokogiri', :git => 'git://github.com/tenderlove/nokogiri.git'
3. 从github安装
上面第2种方法只是针对所有合法的git代码库(不仅仅是github,也可以是你自己的一个git服务器上一个代码库)而言,而如果你所需要的库来自于github,则可以通过更方便的github
参数实现目标:
gem 'nokogiri', :github => '