阅读更多
HeTao.IM
在Jeweler官方的README.markdown详细的描述了如何利用Jeweler,结合github.com和rubygems.org提供的服务来进行在线的RubyGem项目的开发、管理和发布。
如果所在的环境并不具备使用github.com和rubygems.org提供的服务,或者并不希望将的源码通过github.com来进行管理,也并不希望将开发好的RubyGem项目发布到rubygems.org,那么在这样的情况下又如何利用Jeweler来开发、管理和发布你的RubyGem项目呢?本文的下面部分将围绕这个假设来进行详细的叙述。
Jeweler简介
Jeweler是一个用于开发RubyGem项目的工具,主要为RubyGem的开发者提供了两个主要特性:
- 提供了一个便于管理和易于发布RubyGem的基础库;
- 为创建新的RubyGem项目提供了一个脚手架生成器。
开发、管理和发布项目
安装Jeweler
创建RubyGem项目
3 |
$jeweler --rspec new_project |
自定义RubyGem
在使用Jeweler的脚手架生成器创建了一个新的RubyGem项目后,首先需要修改该项目的一些元属性。这些属性将会用来生成.gemspec文件。属性信息在http://docs.rubygems.org/read/chapter/20中有详细的说明。Jeweler通过一个Rake Task自动化的生成.gemspec文件,因此通过修改Rakefile文件中gem的相关属性来实现自定义RubyGem。下面是一个新生成项目的Rakefile文件:
02 |
Jeweler::Tasks. new do |gem| |
03 |
gem.name = "new_project" |
04 |
gem.homepage = "http://github.com/towerhe/new_project" |
06 |
gem.summary = % Q { TODO : one-line summary of your gem} |
07 |
gem.description = % Q { TODO : longer description of your gem} |
09 |
gem.authors = [ "Tower He" ] |
其中gem.name、gem.summary是必填属性,其余的均为可选属性。 下面介绍一个重要的属性gem.files的配置。
1) 使用git做版本控制
Jeweler默认假设使用git来进行版本控制,此时Jeweler会默认的将所有被添加到git中,并已经提交的,且不在.gitignore中的文件添加到gem.files中。也就是说,如果使用git来进行版本控制,那么就不需要去手动的定义gem.files属性,Jeweler会在打包的时候自动生成。
然而开发的项目,有时并不希望将所有提交到git中的内容全部打入包中,这时候该如何去处理呢?此时也需要通过修改Rakefile中的相关属性,来实现此类自定义打包的方案,例如:
- 不希望打包所有用于开发阶段的工具配置信息;
- 不希望打包测试文件;
- 不希望打包…
通过修改gem.files属性可以实现忽略这些不希望打包的文件/目录
非常抱歉!
由于不太会使用javaeye的编辑器,后面的内容无法贴过来,请通过下面地址查阅:
http://hetao.im/2011/01/13/using-jeweler-to-develop-a-rubygem-under-an-offline-env