• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    创建自定义的Ruby gem包的教程

    编写一个最简单的例子

    1. 建好如下文件夹

    注意:lib目录下必须有个和你gem名字一样的rb文件。

    复制代码 代码如下:

        $ cd hola 
        $ tree 
        . 
        ├── hola.gemspec 
        └── lib 
            └── hola.rb 


    2. 编写代码

    . hola.rb

      % cat lib/hola.rb 
      class Hola 
       def self.hi 
        puts "Hello world!" 
       end 
      end 
    



    .hola.gemspec

      % cat hola.gemspec 
      Gem::Specification.new do |s| 
       s.name    = 'hola' 
       s.version   = '0.0.0' 
       s.date    = '2010-04-28' 
       s.summary   = "Hola!" 
       s.description = "A simple hello world gem" 
       s.authors   = ["Nick Quaranto"] 
       s.email    = 'nick@quaran.to' 
       s.files    = ["lib/hola.rb"] 
       s.homepage  = 
        'http://rubygems.org/gems/hola' 
      end 
    


    这里面可以设置很多属性。我会专门写篇文章介绍。

    上面字段的意思,比较简单。相信大家都能理解。


    3.编译生成gem

      % gem build hola.gemspec 
      Successfully built RubyGem 
      Name: hola 
      Version: 0.0.0 
      File: hola-0.0.0.gem 
       
      % gem install ./hola-0.0.0.gem 
      Successfully installed hola-0.0.0 
      1 gem installed 
    



    4.测试使用

      % irb 
      >> require 'hola' 
      => true 
      >> Hola.hi 
      Hello world! 
    


    注意:在ruby 1.9.2之前到版本里面,需要先require 'rubygem',才能使用我们写的gem.


    5.发布到rubygems网站

      $ curl -u tom https://rubygems.org/api/v1/api_key.yaml > 
      ~/.gem/credentials 
      Enter host password for user 'tom': 
    


    设定完之后发布

      % gem push hola-0.0.0.gem 
      Pushing gem to RubyGems.org... 
      Successfully registered gem: hola (0.0.0) 
    


    发布成功。

    这样任何一个人都可以使用你写的gem了。


    稍微复杂的rubygem例子

    上面的例子只有一个ruby文件,一般gem应该没有这么简单的。

    下面说下有多个ruby文件该怎么写。

    1. 目录结构

    多了个hola目录和translator.rb文件

      % tree 
      . 
      ├── hola.gemspec 
      └── lib 
        ├── hola 
        │  └── translator.rb 
        └── hola.rb 
    


    2. 代码

    lib/hola/translator.rb

      % cat lib/hola/translator.rb 
      class Hola::Translator 
       def initialize(language) 
        @language = language 
       end 
       
       def hi 
        case @language 
        when :spanish 
         "hola mundo" 
        else 
         "hello world" 
        end 
       end 
      end 
    


    lib/hola.rb

      % cat lib/hola.rb 
      class Hola 
       def self.hi(language = :english) 
        translator = Translator.new(language) 
        translator.hi 
       end 
      end 
       
      require 'hola/translator' 
    


    .hola.gemspec

      % cat hola.gemspec 
      Gem::Specification.new do |s| 
       s.name    = 'hola' 
       s.version   = '0.0.0' 
       s.date    = '2010-04-28' 
       s.summary   = "Hola!" 
       s.description = "A simple hello world gem" 
       s.authors   = ["Nick Quaranto"] 
       s.email    = 'nick@quaran.to' 
       s.files    = ["lib/hola.rb", "lib/hola/translator.rb"] 
       s.homepage  = 
        'http://rubygems.org/gems/hola' 
      end 
    
    

    红色是和上面不一样的地方。


    其他步骤和上面一样了。很简单吧!


    最后说下怎么写个 gem包含可执行文件的例子。

    这个也很简单。像rake就是典型的包含可执行文件的gem.

    1. 在刚才工程目录下建个bin文件夹

    生成可执行文件,并且修改权限为可运行。

      % mkdir bin 
      % touch bin/hola 
      % chmod a+x bin/hola 
    



    2. 修改可执行文件内容
    bin/hola

      #!/usr/bin/env ruby 
       
      require 'hola' 
      puts Hola.hi(ARGV[0]) 
    
    


    测试下

      % ruby -Ilib ./bin/hola 
      hello world 
       
      % ruby -Ilib ./bin/hola spanish 
      hola mundo 
    
    


    3 .最后修改gemspec

      % head -4 hola.gemspec 
      Gem::Specification.new do |s| 
       s.name    = 'hola' 
       s.version   = '0.0.1' 
       s.executables  'hola' 
    
    

    其他就和上面一样了。很简单吧。

    您可能感兴趣的文章:
    • Ruby中gem包管理器的用法及用bundler来管理多版本的gem
    • Ruby中的gem包管理的使用及gem源搭建教程
    • Ruby包管理器gem常用命令
    • ruby执行周期性任务的三种gem介绍
    • Ruby环境下安装使用bundler来管理多版本的gem
    上一篇:用Ruby实现一个单元测试框架的教程
    下一篇:简单的Ruby中的Socket编程教程
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    创建自定义的Ruby gem包的教程 创建,自定义,的,Ruby,gem,