如何写一个gem。首先第一步要用bundle 创 建一个没有功能的gem(我把它叫作空gem)。
1. 第一步,为自己的gem取个名--- my_first_gem
bundle gem my_first_gem
create my_first_gem/Gemfile
create my_first_gem/Rakefile
create my_first_gem/LICENSE.txt
create my_first_gem/README.md
create my_first_gem/.gitignore
create my_first_gem/my_first_gem.gemspec
create my_first_gem/lib/my_first_gem.rb
create my_first_gem/lib/my_first_gem/version.rb
Initializating git repo in D:/ruby_workspace/my_first_gem
注意:
GemFile:是描述依赖关系的文件。
Rakefile: 发布和打包的 rake tasks
Gemfile.lock: 是用来记录gem目前所有依赖的 RubyGems 和其版本
my_first_gem.gemspec: 是gem描述文件,将来你打gem包的时候, 就靠这个文件了。也可以增加我们要的依赖
gem.add_development_dependency "rspec" 这样就可以使用rspec了。
2. 第二步,修改 gemspec 描述文件。
# -*- encoding: utf-8 -*-
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'my_first_gem/version'
Gem::Specification.new do |gem|
gem.name = "my_first_gem"
gem.version = MyFirstGem::VERSION
gem.authors = ["gem list"]
gem.email = ["ww@qq.com"]
gem.description = %q{my first gem}
gem.summary = %q{my first gem}
gem.homepage = ""
gem.files = `git ls-files`.split($/)
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
gem.require_paths = ["lib"]
gem.add_development_dependency "rspec" #增加依赖声明
end
3. 编译生成 gem
Successfully built RubyGem
Name: my_first_gem
Version: 0.0.1
File: my_first_gem-0.0.1.gem
这个一个gem就生成好了,可以发布使用了。