GemFile详解(一)

来源:互联网 发布:软件汇报ppt 编辑:程序博客网 时间:2024/04/29 14:52

What Is the GemFile ?
Gemfile事我们创建的一个用于描述gem之间的依赖。gem是一堆ruby代码的集合,它能够为我们提供调用。你的GemFile必须放在项目的根目录下,这是Bundler的要求,对于任何的其他形式的包管理文件来说,这是标准,GemFile会作为ruby代码来执行。当在Bundler上下文环境中被执行能使我们访问一些方法,我们用这些方法来解释gem和require之间的关系。
How To Creat Gemfile ? 
首先我们要做的是,告诉GemFile去找到这些gems,这就是gem源。
我们首先用#source的方法来做这件事。

source“http://rubygems.org"

我们主要用的是中国的淘宝源,这样不用翻墙。这里不推荐使用多个源。
源的优先级
我们在Gemfile顶部定义一个源的同时,我们也可以针对每个gem定义一个源,同时,我们也可以为本Bundler地gem定义一个路径或者git路径,
当Bundler尝试定位一个gem的时候,它会首先查看这个gem有没有设置源,如果有,就使用这个源,如果你在设置gem源的时候有使用source,path或git依赖的话,Bundler将会先在这些地方找,然后再去其他地方找。如果没有显示设置的话,Bundler会按照你GemFile里面定义的源的顺序来找。如果一个gem能够在多个源里面找到的话,你将会得到一个warning来提示你的哪个源被使用了。
你能够使#source作为一个block来调用

source "https://my_awesome_source.com"do    gem "my_gem"    gem"my_other_gem"end

带验证的源
有些源需要你的验证才能够被设定。Bundler有一个设置选项使得你可以为每个源设置用户名和密码

bundle config my_gem_source.com my_username:my_password

这是任何希望通过bundler来安装gem都必须要的因为它并不会被放入版本管理界面。你也可以直接在GemFile中设置你的验证信息,当然,这些验证信息也会被commit进你的版本管理工具。

source "https://username:password@my_gem_source.com"

你在这些源里面设置,都会被你以bundle config的方式设置的东西所覆盖。
设置Ruby信息
如果你的应用程序需要使用一个特别的Ruby版本或是引擎,我们都能够在Gemfile里面进行设置。

ruby "1.9.3", :patchlevel => "247", :engine => "jruby", :engine_version => "1.6.7"

当设定这个的时候,需要的唯一点信息就是ruby的版本(我们这里使用1.9.3)
* :pathlevel 声明了Ruby的patch level
* :engine 声明了使用的Ruby引擎
* :engine_version 声明了引擎的版本 (如果这个被设置了,engine也需要被设置)
设置Gems
现在我们到了Gemfile的核心,设置你的gems。最基本的语法如下:

gem "my_gem"

这里my_gem是 gem的名字,gem的名字是唯一要求的参数,此外还有几个可以选择的参数可以使用。
设置Gem的版本
对于一个gem,你最常做的事情就是设置它的版本,如果你不设置版本的话,你也可以说任意的版本都可以。

gem "my_gem", ">= 0.0"

这里有7个操作符供你用来设置你的gem

  * = Equal To "=1.0"   * != Not Equal To "!=1.0"   * > Greater Than ">1.0"   * < Less Than "<1.0"   * >= Greater Than or Equal To ">=1.0"   * <= Less Than or Equal To "<=1.0"   * ~> Pessimistically Greater Than or Equal To "~>1.0"

Pessimistically Greater Than or Equal To

~> 操作能够让你使用这个gem的未来的某个安全的版本。如果你觉得使用一个大的版本更安全,你能够像下面这样声明.

gem "my_gem", "~> 2.0"

这能够允许你安装任意的2.x版本的gem,但是3.x版本是不被允许的。或许你对这么宽泛的版本感到不爽,你也可以声明一个更具体的版本,如下

gem "my_gem", "~> 2.5.0"

这能够让你使用2.5.0到2.6.0之间的版本。下面的例子能够让你更加理解~> 操作符

   * gem "my_gem", "~> 1.0" –> gem "my_gem", ">= 1.0", "< 2.0"   * gem "my_gem", "~> 1.5.0" –> gem "my_gem", ">= 1.5.0", "< 1.6.0"   * gem "my_gem", "~> 1.5.5" –> gem "my_gem", ">= 1.5.5", "< 1.6.0"
0 0
原创粉丝点击