创​建​自​己​的​r​u​b​y​语​言​g​e​m​包

开发环境:ubuntu 12.04;    Ruby 2.1.2

创建 gem 文件

richard@richard:~/gemtest$ bundle gem mygem

create mygem/Gemfile

create mygem/Rakefile

create mygem/LICENSE.txt

create mygem/README.md

create mygem/.gitignore

create mygem/mygem.gemspec

create mygem/lib/mygem.rb

create mygem/lib/mygem/version.rb

Initializing git repo in /home/richard/gemtest/mygem

 

结构如下:

richard@richard:~/gemtest/mygem$ tree

.

├── Gemfile

├── lib

│   ├── mygem

│   │   └── version.rb

│   └── mygem.rb

├── LICENSE.txt

├── mygem.gemspec

├── Rakefile

└── README.md

 

2 directories, 7 files

 

编码

打开 mygem.gemspec ,这个文件里面都是这个 gem 的一些说明。 找到

spec.summary = %q{TODO: Write a gem summary}

spec.description = %q{TODO: Write a gem description}

去掉其中的TODO,可先改为(任意写)

spec.summary = %q{"just for test"}

spec.description = %q{"just for test"}

lib是gem的工作目录,代码尽量都放到lib/目录下。 然后我们在mygem文件夹下建立gemtest.rb和mtest.rb文件。 gemtest.rb内容如下:声明了一个类和方法

class Gemtest

  def initialize(name,address)

    @name=name

    @address=address

  end



  def speak

    puts "#{@name} speak me: I am address #{@address}."

  end

end

mtest.rb内容如下: 声明了一个模块和方法

module Mtest

  def speak

    puts "module test"

  end

end

lib的根目录下有一个mygem.rb文件,这个文件用来引入你在lib/mygem文件夹下建的所有rb文件。 mygem.rb 文件的内容为

require "mygem/version"



require 'mygem/gemtest'



require 'mygem/mtest' 

打开 mygem.gemspec ,找到

spec.files = `git ls-files -z`.split("\x0")

把新加的文件添加进去,不然会找不到文件,在调用gem的时候报错

方法一,把所有要用的文件加入这个数组

spec.files = ["lib/mygem.rb","lib/mygem/gemtest.rb","lib/mygem/mtest.rb","lib/mygem/version.rb"]

方法二,不改动gemspec文件中的配置,把新增的文件添加到git 中:

richard@richard:~/gemtest/mygem$ git add lib

虽然add之后没有commit,也不知道文件添加到什么地放,但是经过测试,是可以识别到文件的。

richard@richard:~/gemtest/mygem$ git ls-files

.gitignore

Gemfile

LICENSE.txt

README.md

Rakefile

lib/mygem.rb

lib/mygem/gemtest.rb

lib/mygem/mtest.rb

lib/mygem/version.rb

mygem.gemspec

richard@richard:~/gemtest/mygem$ 

打包 gem 文件

mygem/version.rb文件是描述当前版本的。如过升级了你的gem,打包之前,确认版本号是否需要变动。

在项目根目录下,即mygem目录下运行命令:

richard@richard:~/gemtest/mygem$ rake build 

mygem 0.0.1 built to pkg/mygem-0.0.1.gem.

会在pkg文件夹下生产gem安装包mygem-0.0.1.gem. 或者使用 gem build mygem.gemspec 会直接在跟目录里生成 mygem-0.0.1.gem.

安装gem 包

安装到本地 加上 --local 运行命令:

richard@richard:~/gemtest/mygem$ gem install pkg/mygem-0.0.1.gem --local

Successfully installed mygem-0.0.1

Parsing documentation for mygem-0.0.1

Done installing documentation for mygem after 0 seconds

1 gem installed

测试是否成功

richard@richard:~/gemtest/mygem$ irb

2.1.2 :001 > require 'mygem'  

 => true 

2.1.2 :002 > a=Gemtest.new("aa","bb")

 => #<Gemtest:0x0000000224ec10 @name="aa", @address="bb"> 

2.1.2 :003 > a.speak

aa speak me: I am address bb.

 => nil 

2.1.2 :004 > include Mtest

 => Object 

2.1.2 :005 > speak

module test

 => nil 

2.1.2 :006 > quit

ok成功

你可能感兴趣的:(r)