创建自己的gem包

RubyGems是一个库和程序的标准化打包以及安装框架,它使定位、安装、升级和卸载Ruby包变的很容易。rails以及它的大部分插件都是以gem形式发布的。本文描述一个自己创建ruby Gems的过程。gem可以使用你现有的文件夹结构,也可以使用命令创建一个标准的gem包结构。下面是用命令创建一个标准的gem包。

运行: gpgen yourgem

运行完后,会自动生成一个标准的gem包结构:

[quote]yourgem
│ COPYING
│ LICENSE
│ Rakefile
│ README

├─lib
│ └─yourgem
│ init.rb

└─resources
defaults.yaml
[/quote]

将自己的代码放在lib/yourgem文件夹下,如果有测试代码,则创建一个test目录,将单元测试的文件都放在这个文件夹下。

将你自己写的rb文件都放在lib/yourgem文件夹下面,比如有a.rb,b.rb

一般的做法,会在lib的根目录下建立一个yourgem.rb文件,这个文件用来引入你lib/yourgem文件夹下的所有rb文件。yourgem.rb文件的内容为:

#yourgem.rb
$:.unshift"#{File.dirname(__FILE__)}/yourgem"
require ‘a’
require ‘b’


制作完rb文件后,修改Rakefile

# Rakefile
require 'rake'
require 'rake/testtask'
require 'rake/clean'
require 'rake/gempackagetask'
require 'rake/rdoctask'
require 'fileutils'
include FileUtils
version="0.1.1" #改为你的version
name="yourgem" #改为你的gem名字
spec = Gem::Specification.new do |s|
s.name = name
s.version = version
s.email="your-email@email.com"
s.homepage = "http://localhost"
s.descrīption = s.summary = "xxxxxxxxxxxxx”
s.author = "xxxx"
s.add_dependency('gem_plugin', '>=0.2.3')
s.platform = Gem::Platform::RUBY
s.has_rdoc = true
s.extra_rdoc_files = ["README"]

candidates = %w(COPYING LICENSE README Rakefile) +
Dir.glob("{bin,doc/rdoc,test,lib}/**/*") +
Dir.glob("ext/**/*.{h,c,rb}") +
Dir.glob("examples/**/*.rb") +
Dir.glob("tools/*.rb") +
Dir.glob("resources/**/*")

s.files = candidates.delete_if do |item| #去掉svv和rdoc目录
item.include?(".svn") || item.include?("rdoc")
end

s.require_path = "lib"
s.bindir = "bin"
end

Rake::GemPackageTask.new(spec) do |p|
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
end

task :install => [:test, :package] do
sh %{sudo gem install pkg/#{name}-#{version}.gem}
end

task :uninstall => [:clean] do
sh %{sudo gem uninstall #{name}}
end

Rake::TestTask.new do |t|
t.libs << "test"
t.test_files = FileList['test/test*.rb']
t.verbose = true
end

Rake::RDocTask.new do |rdoc|
rdoc.rdoc_dir = 'doc/rdoc'
rdoc.options << '--line-numbers'
rdoc.rdoc_files.add ['README', 'LICENSE', 'COPYING', 'lib/**/*.rb', 'doc/**/*.rdoc']
end

task :default => [:test, :package]

CLEAN.include ['build/*', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log', 'pkg', 'lib/*.bundle', '*.gem', '.config']




在当前目录运行

Gem build Rakefile




运行完成后就会自动生成一个gem,然后你就可以按照gem的语法安装,卸载,升级(可以自己制定gem的地址,或者把它上传到gem plugin的server)这个gem包了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值