创建gem包

来源:互联网 发布:如何自学数控编程3个月 编辑:程序博客网 时间:2024/05/20 04:30

接触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  endend
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/alphabeticalWARNING:  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.0Parsing documentation for string_util-0.0.0Installing ri documentation for string_util-0.0.0Done installing documentation for string_util after 0 secondsWARNING:  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  endend

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  endend


编译并生成gem包

gem build string_util.gemspec WARNING:  licenses is empty, but is recommended.  Use a license abbreviation from:http://opensource.org/licenses/alphabeticalWARNING:  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.1Parsing documentation for string_util-0.0.1Done installing documentation for string_util after 0 secondsWARNING:  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
原创粉丝点击