`
非飞
  • 浏览: 79440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

在离线环境中使用Jeweler开发RubyGem

阅读更多

HeTao.IM

在Jeweler官方的README.markdown详细的描述了如何利用Jeweler,结合github.comrubygems.org提供的服务来进行在线的RubyGem项目的开发、管理和发布。

如果所在的环境并不具备使用github.com和rubygems.org提供的服务,或者并不希望将的源码通过github.com来进行管理,也并不希望将开发好的RubyGem项目发布到rubygems.org,那么在这样的情况下又如何利用Jeweler来开发、管理和发布你的RubyGem项目呢?本文的下面部分将围绕这个假设来进行详细的叙述。

Jeweler简介

Jeweler是一个用于开发RubyGem项目的工具,主要为RubyGem的开发者提供了两个主要特性:

  • 提供了一个便于管理和易于发布RubyGem的基础库;
  • 为创建新的RubyGem项目提供了一个脚手架生成器。

开发、管理和发布项目

安装Jeweler
1 $gem install jeweler
创建RubyGem项目
1 $jeweler new_project
2 # 如果使用rspec来做单元测试,那么在创建项目时需要指定
3 $jeweler --rspec new_project
4
5 # 查看jeweler的所有选项
6 $jeweler -h
自定义RubyGem

在使用Jeweler的脚手架生成器创建了一个新的RubyGem项目后,首先需要修改该项目的一些元属性。这些属性将会用来生成.gemspec文件。属性信息在http://docs.rubygems.org/read/chapter/20中有详细的说明。Jeweler通过一个Rake Task自动化的生成.gemspec文件,因此通过修改Rakefile文件中gem的相关属性来实现自定义RubyGem。下面是一个新生成项目的Rakefile文件:

01 require 'jeweler'
02 Jeweler::Tasks.new do |gem|
03   gem.name = "new_project"
04   gem.homepage = "http://github.com/towerhe/new_project"
05   gem.license = "MIT"
06   gem.summary = %Q{TODO: one-line summary of your gem}
07   gem.description = %Q{TODO: longer description of your gem}
08   gem.email = "towerhe@gmail.com"
09   gem.authors = ["Tower He"]
10 end

其中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

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics