[ruby] Gem基本介绍

445 阅读3分钟

Gem的文件夹结构

每个Ruby Gem的文件夹结构基本相同:

  1. lib:包含Gem的源代码
  2. bin:包含可执行Gem的可执行文件,Gem安装后,bin目录会被添加到$LOAD_PATH里
  3. test/spec:文件夹包含测试代码(取决于使用的测试框架)
  4. README:包含Gem的文档
  5. Rakefile:定义Rake任务(自动化执行测试代码,生成可执行文件等任务)
  6. .gemspec:包含Gem信息

gemspec文件

每个Gem的根文件夹下面都会有一个gemspec文件,这个文件包含了Gem的基本信息:

必须得属性

  1. authors:Gem的作者
  2. files:Gem的源代码位置(通常指向lib/xxx.rb)
  3. name:Gem的名字
  4. summary:Gem的大概介绍
  5. version:Gem的版本(如果版本里包含字母,代表预发布版本)

推荐的属性

  1. description:比summary更具体的描述
  2. email:联系邮箱
  3. homepage:Gem的homepage的URL
  4. license:Gem的license(不能超过64个字母)
  5. licenses:Gem的license(不能超过64个字母)
  6. metadata:可由作者设置的Gem的元数据。metadata必须是hash。key和value必须是字符串。key的长度最多128个字节;value的长度最多1024个字节。key和value都必须是UTF-8的字符,不能包含二进制数据。
  7. required_ruby_version:Gem要求的ruby版本

可选的属性

  1. add_development_dependency:添加开发依赖
  2. add_runtime_dependency:添加运行依赖
  3. bindir:可执行脚本的目录(通常是bin)
  4. extensions:指定安装Gem时需要构建的扩展(通常是extconf.rb文件的路径)

常用Gem命令

  1. 安装Gem:gem install xxx
  2. 卸载Gem:gem uninstall xxx
  3. 搜索Gem:gem search xxx(xxx可以是正则表达式)。可使用gem search xxx -d列出Gem的详细信息
  4. 列出本地Gem:gem list
  5. 查看文档:查看本地Gem的文档,ri xxx

如何命名Gem

通常Gem命名遵循如下规则:

  1. 用下划线区分名字中的单词:类或模块的名字如果包含多个单词,用下划线区分。
  2. 用破折线表示扩展:如果是对现有的gem做功能扩充,那么用破折线命名。如:net-http-digest_auth表示为net/http添加HTTP digest auth功能。
  3. 按需混合下划线和破折线:例如:net-http_digest_auth
  4. 不要使用大写字母:有些系统的文件系统是大小写敏感的,命名时尽量只用小写字母

按照上述命名规则,即可根据名字快速推导出require语句及主要的类和模块的名字,如:

  • Gem名字:ruby_parser

  • Require语句:require 'ruby_parser'

  • 类或模块名字:RubyParser

  • Gem名字:rdoc-data

  • Require语句:require 'rdoc/data'

  • 类或模块名字:Rdoc::Data

  • Gem名字:net-http-persistent

  • Require语句:require 'net/http/persistent'

  • 类或模块名字:Net::HTTP::Persistent

  • Gem名字:net-http-digest_auth

  • Require语句:require 'net/http/diagest_auth'

  • 类或模块名字:Net::HTTP::DigestAuth

References

What is a gem?