自己创建Gem包

分2部分

  1. gem包开发
  2. gem包发布及引用

1. gem包开发

1-1. 创建gem包项目

bundler gem xxxx

1-2. 进入gem包项目,改修.gemspec文件。

1-2-1. 填写替换其中的summary、description。这2处的TODO: 必须去掉,否则不能编译
spec.summary       = %q{TODO: Write a short summary, because Rubygems requires one.}
spec.description   = %q{TODO: Write a longer description or delete this line.}
1-2-2. 替换或清空homepage。必须填写或者清空,否则发布到rubygems.org时会无法通过
spec.homepage      = "TODO: Put your gem's website or public repo URL here."
1-2-3. 屏蔽下面代码(respond_to部分)。必须填写有效域名或者屏蔽,否则发布到rubygems.org时会无法通过
  if spec.respond_to?(:metadata)
    spec.metadata["allowed_push_host"] = "TODO: Set to 'http://mygemserver.com'"
  else
    raise "RubyGems 2.0 or newer is required to protect against " \
      "public gem pushes."
  end
1-2-4. 添加依赖包。参照下面格式添加
spec.add_development_dependency "bundler", "~> 1.15"
spec.add_development_dependency "rake", "~> 10.0"

1-3. 开发自己的gem包代码

1-3-1. 引入自定义class文件

新gem默认为类型为module,如果需要引入class,可以将class文件直接放入lib/xxxx目录下,并在lib/xxxx.rb入口文件引入:

require "yyyy"
1-3-2. 如果需要将包名与引入class名同步,则需要将以下2处位置进行修改:

lib/xxxx.rb 入口中的'module'改为'class'
lib/xxxx/version.rb中的'module'改为'class'

1-4. 编译gem

rake build

1-5. 安装gem(相当于先编译,后安装)

rake install

1-6. 测试gem

bin/console
或者
irb

进入ruby控制台,然后引入gem

require 'xxxx'

引入后即可执行gem中的方法进行测试

2. gem包发布、安装及引用

2-1. 本地安装引用

2-1-1. 如果已经编译成gem文件,则可直接单独使用命令安装
gem install --local xxxx
2-1-2. 如果是gem文件夹,则可放到项目的vendor/gems目录下,然后在Gemfile中增加:
gem 'xxxx', path: 'vendor/gems/xxxx'

这样在bundle install时,就能直接安装

2-2. 通过rubygems安装

2-2-1. 注册rubygems

访问https://rubygems.org,并注册

2-2-2. 发布自己的gems,在gem项目目录下,执行以下命令
gem push pkg/xxxx-0.1.0.gem

等待更新完即可通过rubygems.org进行外网安装,至于同步到其他镜像则由镜像同步频率来决定。

2-3. rubygems上gem包删除

gem yank xxxx -v 0.1.0

删除后rubygems.org上将找不到该版本

2-4. rubygems上gem包更新

2-4-1. 每次更新必须更换版本号,即改修lib/xxxx/version.rb中的版本号
2-4-2. 重复版本号不允许重复发布,就算已经删除,也是不允许的

*** 今后如有补充会继续更新

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容