`
非飞
  • 浏览: 80331 次
  • 性别: 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
分享到:
评论

相关推荐

    珠宝商:用于创建和管理Rubygem项目的有思想的工具

    请注意,如果您是从头开始,请使用继承者 I(Fred Mitchell,flajann2)将同时维护Jeweler和Juwelier,但将为Juwelier添加新功能,并最终在某个命名空间之后将其“合并”到Juwelier中问题得到处理。 你好,世界 使用...

    高频词汇表 (17)1

    16. **nevertheless**: 这个词在编程文档中使用,表达尽管有某些条件,但程序仍需执行其他操作。 17. **peculiar**: 在调试过程中,"peculiar"可能用来描述程序中的异常或不寻常的行为。 18. **react**: 在响应式...

    小升初必背1000个英语单词(分类整理).doc

    在居住和工作环境的词汇中,"office"(办公室)、"apartment"(公寓)、"theatre"(戏院)和"hotel"(饭店)等,都是生活中常见的地点,对于提升学生的语言应用能力非常关键。 在学习和教育相关词汇中,"classroom...

    git-tagging:Gem 在 git 中标记 capistrano 部署

    git 标记将标签添加到正在部署的存储库(使用 Capistrano),格式为: #{stage}-week#{Date.today.cweek-1}.#{release_timestamp}指示将 gem 添加到您的 Gemfile 中: gem 'git-tagging'在你的 Capfile 添加 require...

    mnc-moreappsdk-ios

    在iOS开发中,Ruby有时被用作构建工具,如使用Bundler管理依赖,或者通过Jeweler、Gemspec等来创建和发布Ruby Gems,这些Gem可以包含库、工具或其他资源,类似于SDK。 【文件名称列表】"mnc-moreappsdk-ios-master...

    beta:一个示例 gem 骨架,包括 rspec、guard、pry、vcr、yard、simplecov、jeweler 和 bundler

    TODO: 写一个 gem 描述安装将此行添加到应用程序的 Gemfile 中: gem 'beta' 然后执行: $ bundle或者自己安装: $ gem install beta用法TODO:在这里写使用说明贡献分叉它( ) 创建您的功能分支( git checkout -...

    小升初英语必备词汇1000个.doc

    1. 场所词汇:如square(广场)、cinema(电影院)、park(公园)等,这些都是孩子们日常生活中可能接触到的地方,学习这些词汇有助于他们更好地理解和描述周围环境。 2. 服装与穿着:包括coat(外套)、blouse...

    域名选取的技巧

    域名不仅是访问者进入企业网站的关键,还是企业在虚拟世界中的存在象征,承载着指示和引导用户的功能。对于企业来说,尤其在开展电子商务的过程中,拥有一个优秀的域名能够显著提升企业的网络知名度,因此,选择合适...

    lupine_crypto:各种加密算法的Ruby实现

    当前的加密算法 Ceasar密码(加密的“ Hellow世界”) 希望还会有更多……宝石状态 刚刚使用jeweler 添加了一个gem骨架,但是还没有完全将旧代码集成进去,因此还没有为它的第一个版本做好准备版权 版权所有:...

    ffi-libfreenect:libfreenect 库的 Ruby FFI 包装器

    确保在开始之前正确安装了 libfreenect。 请参阅: 通过宝石 (sudo)? gem install ffi-libfreenect 通过耙¶ ↑ git clone http://github.com/jgrunzweig/ffi-libfreenect.git cd ffi-libfreenect (sudo)? gem ...

    小升初必背1000个英语单词(分类).doc

    【小升初必背1000个英语单词】涵盖了孩子们从小学升入初中的关键词汇,这些词汇在日常对话、阅读理解以及写作中都至关重要。词汇的学习是英语学习的基础,掌握这些单词可以帮助学生更好地适应初中阶段的英语课程。 ...

Global site tag (gtag.js) - Google Analytics