【发布时间】:2014-01-14 12:23:36
【问题描述】:
正如问题可能表明的那样,我对 Ruby 还是很陌生。我正在开发我的第一个自定义 gem 作为我自己的教程。在这种情况下,它是一些用于管理一副纸牌的类。我已经成功构建并安装了 gem,但是当我尝试在 IRB 中使用它时,我得到了一个“未初始化的常量”错误。我正在使用 Ruby 2.0。这是基本的破败:
在我的 gem 中,lib 中有三个类:Card.rb、Deck.rb 和 card_deck.rb(这是自动生成的。card_deck.rb 定义了模块 CardDeck 和 Card 和`Deck 文件分别定义了同名的类。安装我的 gem 后,我运行 irb 并得到以下内容:
$> require 'card_deck'
=> true
$> CardDeck
=> CardDeck
这告诉我 gem 安装成功。但是,当我尝试使用 Card 或 Deck 时,我得到以下信息:
$> Card
NameError: uninitialized constant Card
所以我的问题是:我希望从我的 gem 中获得的任何类是否需要包含在一个模块中,或者是否需要以不同的方式要求或导入它们?在我的 gemspec 中,lib 文件夹列在 required_path 属性中。这是否意味着在需要我的 gem 之后我想要访问的任何类都需要在模块中定义?
再一次,我做了一些 Rails 工作,但对 Ruby 和构建 gems 还是很陌生。感谢您的任何意见和建议。
【问题讨论】: