创建gem包

接触ruby算下来也快两年了,一直都是写些业务代码,遇到技术难题在网上搜索答案,或者找一个相关的gem包,一般情况下都是使用别个大牛的gem包,自己从来没有打包过,最近有个需求,需要创建一个gem包,供一些公司的内部项目使用。

怎么创建一个gem包呢,google一下,gem的官方文档上居然有相关介绍,好吧,跟着这个学习一下这个过程。

简单gem包创建

在这个gem包里我们实现字符串转大小写的功能。

创建以下文件夹以及文件

注意:lib目录下必须有个和你gem名字一样的rb文件。
tree .
.
├── lib
│   └── string_util.rb
└── string_util.gemspec

编写两个文件的内容

string_util.rb
class StringUtil
  def self.up_case(str)
    str.upcase
  end
end
 
 
 string_util.gemspec 
Gem::Specification.new do |s|
  s.name        = 'string_util'
  s.version     = '0.0.0'
  s.date        = '2016-05-25'
  s.summary     = "string_util!"
  s.description = "process string to upcase"
  s.authors     = ["chenyafei"]
  s.email       = 'chenyafei@163.com'
  s.files       = ["lib/string_util.rb"]
  s.homepage    =
    'http://rubygems.org/gems/hola'
end

这里有很多字段,都是代表什么意思呢,这里先不介绍了,涉及到很多字段,我后面再写篇文章介绍吧,这里只写gem包的制作。这个gem包里的这个几个字段都很简单,都能看得懂什么意思吧。

编译并生成gem包

gem build string_util.gemspec 
WARNING:  licenses is empty, but is recommended.  Use a license abbreviation from:
http://opensource.org/licenses/alphabetical
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
  Successfully built RubyGem
  Name: string_util
  Version: 0.0.0
  File: string_util-0.0.0.gem
忽略警告。

安装gem包

[chenyafei@develop string_util]$ gem install string_util-0.0.0.gem 
Successfully installed string_util-0.0.0
Parsing documentation for string_util-0.0.0
Installing ri documentation for string_util-0.0.0
Done installing documentation for string_util after 0 seconds
WARNING:  Unable to pull data from 'http://ruby.taobao.org': bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
1 gem installed
忽略警告。

测试gem包

1.9.3-p551 :001 > require('string_util')
 => true 
1.9.3-p551 :002 > StringUtil
 => StringUtil 
1.9.3-p551 :003 > StringUtil.up_case('abcd')
 => "ABCD"

哈哈,很简单吧,到这我们就完成了一个很简单的gem的制作,不过要注意的是 在ruby 1.9.2之前到版本里面,需要先require 'rubygem',才能使用我们写的gem。

不过这个gem包太简单了,只有一个文件,怎么制作复杂的gem包呢,如果这个gem包里有多个文件,怎么做呢,我们再举个例子。

复杂gem包创建

在这个例子用我们实现一个区分参数类型的转大写的功能。

目录结构

$ tree
.
├── lib
│   ├── string_util.rb
│   └── util
│       └── process.rb
└── string_util.gemspec

这次目录里多个文件夹util和文件process.rb

代码

string_util.gemspec
Gem::Specification.new do |s|
  s.name        = 'string_util'
  s.version     = '0.0.1'
  s.date        = '2016-05-25'
  s.summary     = "string_util!"
  s.description = "process string to upcase"
  s.authors     = ["chenyafei"]
  s.email       = 'chenyafei@163.com'
  s.files       = ["lib/string_util.rb", "lib/util/process.rb"]
  s.homepage    =
    'http://rubygems.org/gems/hola'
end

lib/string_util.rb
require "util/process"
class StringUtil
  def self.up_case(str)
    o = Util::Process.new(str)
    o.to_case
  end
end

lib/util/process.rb
module Util
  class Process
    def initialize(str)
      @str = str
    end


    def to_case
      if(@str.is_a?(Class))
        return 'error str is a Class!!!!'
      elsif(@str.is_a?(Fixnum))
        return 'error str is a Number!!!!'
      elsif(@str.is_a?(String))
        return @str.upcase
      else
        return 'error other Object!!!!'
      end
    end
  end
end


编译并生成gem包

gem build string_util.gemspec 
WARNING:  licenses is empty, but is recommended.  Use a license abbreviation from:
http://opensource.org/licenses/alphabetical
WARNING:  See http://guides.rubygems.org/specification-reference/ for help
  Successfully built RubyGem
  Name: string_util
  Version: 0.0.1
  File: string_util-0.0.1.gem

安装gem包

gem install string_util-0.0.1.gem 
Successfully installed string_util-0.0.1
Parsing documentation for string_util-0.0.1
Done installing documentation for string_util after 0 seconds
WARNING:  Unable to pull data from 'http://ruby.taobao.org': bad response Not Found 404 (http://ruby.taobao.org/specs.4.8.gz)
1 gem installed

测试代码

1.9.3-p551 :001 > require('string_util')
 => true 
1.9.3-p551 :002 > StringUtil.up_case(12)
 => "error str is a Number!!!!" 
1.9.3-p551 :003 > StringUtil.up_case(String)
 => "error str is a Class!!!!" 
1.9.3-p551 :004 > StringUtil.up_case('abds')
 => "ABDS"

越来越爱ruby了,如此简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值