首页 > 代码库 > Gem简介

Gem简介

Rubyems:简称gems是一个用于对rails组建近些年个打包的ruby打包系统,它提供了一个分发ruby程序喝库的标准格式,还提供了一个管理程序包的工具。Rubyems的功能类似于linux下的apt-get,是个包管理器,可以从远程下载所需的包。 

什么是gem:你可以这样理解,gem是一系列文件和包的总称,是一些rails项目依赖的软件或者环境,或者是依赖的关系库,当你的项目中缺少的时候,你可以用gem install 来进行安装,这种安装是通过RubyGems这个包管理工具来安装的,当然你也可以通过bundleer来安装。说到这两种安装方法,区别在于: 

gem install xxx.gem是通过Rubyems工具来进行安装的,将所需要的gem都安装到/usr/local/ruby/lib/ruby/gems/1.8(你的ruby的安装目录)。这其中包括了Cache、doc、gems、specifications 4个目录,cache下放置下载的原生gem包,gems下则放置的是解压过的gem包。当安装过程中遇到问题时,可以进入这些目录,把有问题的gem删掉,重新 gem install 即可 

bundle install 默认情况下也是将所需要的gem安装到这个位置,但是在一些情况,可能你当前的用户权限对那个目录没有可写权限,这个时候bundler将会在一个临时目录里来升级所需的一切gem,然后管你要sudo的密码,这样的话,才有权限copy这些gems到系统的目录去。其实你应该永远也不要用sudo bundle install,因为在bundle install的时候,有些步骤是必须要用你现在的用户角色来进行的。 

Rails 3中如果需要 require 某个 gem 必须通过 Gemfile 来管理。 

Gemfile.lock 则用来记录本机目前所有依赖的 RubyGems 和其版本,所以强烈建议将该文件放入版本控制器,从而保证大家基于同一环境下工作。 

bundle install:安装你在项目的Gemfile文件中指定的项目依赖库 
描述:用来安装你在Gemfile中制定的,该项目所要用到的依赖的gem。 

如果你第一次运行bundle install,并且这个Gemfile.lock不存在,bundler将会在远程的源上去抓取这些依赖的库,去解析依赖关系,并且安装所有你在Gemfile中指定的gem。 

如果Gemfile.lock文件已经存在了,并且你还没有更改你的Gemfile文件,bundler将会所有的远程资源,但是是根据Gemfile.lock中制定的gem来解析依赖关系。 

如果Gemfile.lock文件已经存在了,并且你已经更改了Gemfile文件,bundler将会用Gemfile.lock中,你没有更改之前的gem来解析依赖关系,并且将会利用你更改过的gem来重新解析这些依赖。 

如果gems有新版本,Gemfile.lock如何同步更新: bundle update,这样bundle会去检查 http://rubygems.org/ 上 gem的最新版本,如果本地旧的话,会去更新到最近版本。然后同步更新Gemfile.lock 

在Linux下不要使用 sudo bundle install/update,这样会在.bundle目录下查找bundle install path 的配置,找到后安装到该目录,而非系统指定的目录,不方便管理。这就是说,通过sudo bundle install 安装的gem会在你当前的家目录的.bundle下 

 

Gem简介