Ruby - 我可以使用未在模块中定义的gem中的类吗?

时间:2013-12-26 21:50:06

标签: ruby gem

正如问题可能表明的那样,我对Ruby仍然很陌生。我正在开发我的第一个自定义gem作为我自己的教程。在这种情况下,它是一些管理一副牌的类。我已经成功构建并安装了gem,但是当我尝试在IRB中使用它时,我得到一个'未初始化的常量'错误。我正在使用Ruby 2.0。这是基本的破败:

在我的gem中,我在lib中有三个类:Card.rbDeck.rbcard_deck.rb(自动生成。card_deck.rb定义模块CardDeckCard和`Deck文件分别定义了同名的类。安装我的gem之后,我运行irb并得到以下内容:

$> require 'card_deck'
=> true
$> CardDeck
=> CardDeck

这告诉我gem已成功安装。但是,当我尝试使用CardDeck时,我会收到以下信息:

$> Card
NameError: uninitialized constant Card

所以我的问题是:我希望从我的gem获得的任何类都需要包含在模块中,还是需要以不同的方式需要或导入?在我的gemspec中,lib文件夹列在required_pa​​th属性中。这是否意味着在需要我的gem需要在模块中定义之后我想要访问的任何类?

同样,我已经完成了一些Rails工作,但我仍然是整个Ruby的新手并且构建了宝石。感谢您的任何意见和建议。

1 个答案:

答案 0 :(得分:1)

我发现在你不太了解正确行事方式的情况下做的最好的事情之一:为你的语言找到一个流行的宝石或图书馆,并注意它的结构方式。为4-5颗宝石做这件事,看看你注意到了什么,它会对你产生双重影响。其一,通过阅读代码,您将更好地掌握Ruby本身,并且您将获得两种语言模式和细微差别。

我会说,是的,我对Gems的天真知识。我已经尝试了这个类<<自我位,但它的代码味道很臭。

这些可能对宝石创作有所帮助: http://net.tutsplus.com/tutorials/ruby/gem-creation-with-bundler/

Ruby风格指南将帮助您适应分散的其他一些细微差别: https://github.com/bbatsov/ruby-style-guide