Gem 结构
文件与 gemspec
Gem 结构 是 CoddyKit 上的免费 Ruby Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ruby Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ruby Academy 课程共包含 4 节课。
什么是 Ruby 包
Ruby 包是一种打包好的 Ruby 库或应用,可以安装、管理版本,并通过 RubyGems 共享。您使用的几乎每个 Ruby 工具都是 Ruby 包。
- Ruby 包会捆绑代码、元数据和依赖。
- 元数据存放在包规格文件中。
- 像
bundler和gem这样的工具可以管理 Ruby 包。
生成项目骨架
最快的开始方式是 bundle gem mygem。它会搭建标准目录结构、包规格文件、测试目录、README 和许可证文件。然后您只需填入代码。
标准目录结构
一个名为 mygem 的典型 Ruby 包如下所示:
lib/mygem.rb入口文件。lib/mygem/其他源文件。lib/mygem/version.rb版本常量。mygem.gemspec元数据。test/或spec/测试。README.md和许可证文件。
入口文件
当有人执行 require 'mygem' 时,系统会加载 lib/mygem.rb。它通常会加载版本文件和库的其余部分,并定义顶层模块。
module Mygem
def self.greet(name)
"Hello, " + name
end
end
puts Mygem.greet("world")版本文件
将版本放在独立文件中,可以让包规格文件和代码都读取它。按照惯例,应在 Ruby 包的模块中定义一个 VERSION 常量。
module Mygem
VERSION = "0.1.0"
end
puts "Current version: " + Mygem::VERSION什么是包规格文件
包规格文件是一个描述 Ruby 包的 Ruby 文件,其中包含名称、版本、作者、摘要、文件和依赖等信息。RubyGems 会读取它来构建和发布软件包。
它就是普通的 Ruby 代码,因此可以计算值,但应保持简单并采用声明式写法。
最小包规格文件
核心字段包括名称、版本、作者、摘要和文件。下面是一个结构示例,使用普通 Ruby 编写,您可以将其放入 mygem.gemspec。
require "ostruct"
spec = OpenStruct.new
spec.name = "mygem"
spec.version = "0.1.0"
spec.authors = ["Your Name"]
spec.summary = "A tiny example gem"
puts spec.name + " " + spec.version列出文件
包规格文件必须声明哪些文件会随 Ruby 包一起发布。许多包规格文件会让 git 提供已跟踪的文件,这样就不会遗漏任何内容:
spec.files = Dir['lib/**/*.rb'] + ['README.md']
只有列出的文件会被打包,因此遗漏文件会导致安装失败。
声明依赖
包规格文件中有两种依赖:
add_dependency用于运行时需要、用户必须安装的依赖。add_development_dependency用于开发期间使用的工具,例如测试框架。
请使用 '~> 1.2' 之类的版本约束来保持兼容性。
所需 Ruby 版本
请设置 spec.required_ruby_version,这样使用过旧 Ruby 版本的用户会看到明确的错误,而不是令人困惑的崩溃。同时填写主页、许可证和元数据字段,让 Ruby 包更加完善。
required = ">= 3.0.0"
current = RUBY_VERSION
puts "Requires Ruby " + required
puts "Running Ruby " + current构建 Ruby 包
包规格文件准备好后,gem build mygem.gemspec 会生成一个 .gem 文件。您可以使用 gem install ./mygem-0.1.0.gem 在本地安装它,以便在发布前进行测试。
快速检查
检查您对 Ruby 包结构的理解。
回顾:Ruby 包结构
您学习了 Ruby 包的组织方式:
bundle gem会搭建目录结构。lib/mygem.rb是入口文件。- 版本存放在独立文件中。
- 包规格文件保存元数据、文件和依赖。
gem build会将其打包。
接下来,我们来组织 Ruby 包中的实际代码。
常见问题解答
「Gem 结构」课时是免费的吗?
是的 — 「Gem 结构」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ruby Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ruby Academy 课程共包含 4 节课。
「Gem 结构」这节课中我会学到什么?
文件与 gemspec 你通过在浏览器中直接运行的动手代码来练习 Ruby Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ruby Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ruby Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「Gem 结构」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ruby Academy 课中编写并运行代码吗?
能。每节 Ruby Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- Gem 结构
- 编写代码
- 测试与版本管理
- 发布到 RubyGems