0Pricing
Ruby Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. Gem 结构
  2. 编写代码
  3. 测试与版本管理
  4. 发布到 RubyGems
← 返回 Ruby Academy