Log 1 创建自己的gem

背景:好奇gem包的用法,首先搞清楚什么是gem包。那我们就先来创建一个自己的gem包。

时间:2014-3-8

环境:Ubuntu + Ruby 1.9.3

记录:Roy


创建目录结构

$ cd ~;mkdir -p codes/ruby/sayhello
$ cd codes/ruby/sayhello
$ mkdir bin
$ mkdir lib

创建vim lib/sayhello.rb

 #!/usr/bin/ruby

 def sayhello(name)
puts "#{name} says hello to you!"
end

创建vim bin/sayhello

 #!/usr/bin/ruby
require 'sayhello'
param_num = 0
while param_num < ARGV.length
sayhello(ARGV[param_num])
param_num += 1
end

创建vim sayhello.spec

 SPEC=Gem::Specification.new do |s|
s.name = 'sayhello'
s.version = '0.1.0'
s.files = 'lib/sayhello.rb'
s.executable = 'sayhello'
s.summary = 'This is an example!'
s.description = 'A sample to say hello.'
s.email = 'burningroy2011@gmail.com'
s.homepage = "<link>"
s.authors = ['Roy']
end

sayhello目录结构

$ tree .
.
|
|-----bin
| |---sayhello
|-----lib
| |---sayhello.rb
|-----sayhello.spec

执行build

$ gem build sayhello.spec

安装sayhello包

$ gem install sayhello-0.1..gem
Successfully installed sayhello-0.1.
gem installed
Installing ri documentation for sayhello-0.1....
Installing RDoc documentation for sayhello-0.1....

已经安装的gem位置

$ cd /var/lib/gems/1.9./gems
$ tree .
.----sayhello-0.1.
|
|-----bin
| |---sayhello
|-----lib
|---sayhello.rb

使用包进行测试

创建vim ~/dash.rb

 #!/usr/bin/ruby

 require 'rubygems'
load Gem.bin_path('sayhello','sayhello')

执行~/dash.rb(注意打开执行权限)

$ ~/dash.rb Roy Lydia Osan
Roy says hello to you!
Lydia says hello to you!
Osan says hello to you!

在dash.rb中,我们通过load Gem.bin_path。去调用sayhello包中的bin/sayhello,并且bin/sayhello调用了lib/sayhello.rb。

Ruby - 创建自己的GEM的更多相关文章

  1. Ruby创建命令

    Ruby创建命令

  2. ruby 编译安装,gem国内源ruby.taobao.org

    centos6.6final 一.安装依赖包(使用默认CENTOS更新源): # yum install openssl* openssl-devel zlib-devel gcc gcc-c++ m ...

  3. ruby创建某些“关键字”方法别名的语法

    begin和end是ruby的关键字,但是Range中也有名称为begin和end的实例方法.现在问题来了:怎么创建它们的别名方法? 如果用class Range;alias begin_x begi ...

  4. RubyGems系列之创建自己的gem

    转载请注明来源:https://www.cnblogs.com/zhanggui/p/9720818.html 一. 前言 我们可以在rubygems.org中下载安装他人创建的gem.现在,我们尝试 ...

  5. 【Ruby】【改gem源镜像】【Win10 + Jruby-9.1.2.0 + Rails 5.1.3 + gem 2.6.4 】

    参考地址:https://ruby-china.org/topics/33843 (1)> gem sources --add http://gems.ruby-china.org 遇到问题: ...

  6. (转)Ruby On Rails 推荐 Gem 列表

    作者:尘缘,QQ:130775,来源:http://www.4wei.cn/archives/1002157 PHP的包管理Composer还在刚刚兴起的阶段,Ruby社区已经有很多成熟的Gem了,R ...

  7. ruby 制作自己的gem包

    在ruby工程目录下新建一个文件:crowdSystem.gemspec.需要在lib目录下存在同一名称的ruby库文件:crowdSystem.rb

  8. warning insecure world writable dir ruby mode 040777,gem insstal sass error failed to build gem native extension

    //1.删除原gem源 gem sources --remove https://rubygems.org/ //2.添加国内镜像 gem source -a https://gems.ruby-ch ...

  9. 关于解决ruby源码安装 gem install报错问题

    因做redis集群需要安装ruby,源码安装过后gem install redis安装redis接口报错 解决方案: 确保主机安装zlib,没有安装执行 yum -y install zlib zli ...

随机推荐

  1. 海战(洛谷 P1331)

    题目描述 在峰会期间,武装部队得处于高度戒备.警察将监视每一条大街,军队将保卫建筑物,领空将布满了F-2003飞机.此外,巡洋船只和舰队将被派去保护海岸线.不幸的是因为种种原因,国防海军部仅有很少的几 ...

  2. 最长递增子序列 (LIS) Longest Increasing Subsequence

    问题描述: 有一个长为n的数列a0, a1,..., an-1.请求出这个序列中最长的上升子序列.请求出这个序列中最长的上升子序列. 上升子序列:对于任意i<j都满足ai<aj的子序列. ...

  3. msp430入门编程36

    msp430中C语言的可移植--面向接口实现

  4. HDU 6397 组合数学+容斥 母函数

    Character Encoding Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Oth ...

  5. eclipse 修改Java代码 不用重新启动tomcat

    例子: 1.在tomcat server.xml文件配置加上这句话: <Context debug="0" docBase="C:\Users\admin\Desk ...

  6. 【Java源码】集合类-优先队列PriorityQueue

    一.类继承关系 public class PriorityQueue<E> extends AbstractQueue<E> implements java.io.Serial ...

  7. 洛谷——P1262 间谍网络

    P1262 间谍网络 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A可以揭发B.有些间谍收受贿赂,只要给他们一定数量的美元,他们就愿意 ...

  8. HDU3459:Rubik 2&#215;2&#215;2(IDA)

    Problem Description Sonny is probably the only computer science Ph.D. student who cannot solve a Rub ...

  9. js实现的美女瀑布流效果代码

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...

  10. Redis系列之-—Redis-cli命令总结【转】

    Redis-cli命令最新总结 参考资料: http://redisdoc.com/ 或者 http://doc.redisfans.com http://redis.io/commands 一. 进 ...