首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自一个类的带有Bundler的新gem

来自一个类的带有Bundler的新gem
EN

Stack Overflow用户
提问于 2011-11-12 18:53:43
回答 1查看 441关注 0票数 1

当我们运行bundle gem new_gem命令时,会创建一个包含这些文件的目录:

代码语言:javascript
复制
  create  new_gem/Gemfile
  create  new_gem/Rakefile
  create  new_gem/.gitignore
  create  new_gem/new_gem.gemspec
  create  new_gem/lib/new_gem.rb
  create  new_gem/lib/new_gem/version.rb

默认情况下,文件new_gem/lib/new_gem.rb是一个名为NewGem的模块。

我的问题如下:如果NewGem是一个类,我该怎么做?与其拥有NewGem::NewGem,我只想定义这个类(没有根模块)。

我试着在这个文件中用类替换模块,然后创建一个本地gem来测试它,但是在它安装之后,我不能在IRB中加载它(使用require 'new_gem')。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-12 23:52:34

你应该问问你自己为什么要这样做。这个模块用来namespace你的gem代码。通常为所有类提供上下文,但即使在单个类gem中,这也有助于提供与世界上其他代码的冲突。

除非您的类被命名为SomethingThatCouldNeverPossiblyBeDefinedAnywhereElse,否则保留该模块可能是一件好事。尽管如此,保持模块完好无损仍然是一件好事,因为这是惯例,也是人们在检查/使用您的代码时所期望的。

考虑到这一点,如果你想要一个单一的gem类,你需要做一些事情。

  1. 生成的gemspec想要require 'new_gem/version'来查找它的版本号。将其更改为简单的git gemspec还会使用git ls列出其包含的文件,并且生成的require 'new_gem'.
  2. The包已经在预先构建的git repo中包含了new_gem/version。删除这个:git rm lib/new_gem/version.rb
  3. Change您的new_gem模块到一个类,就像您从您的类中定义生成的version.rb需求一样,并在那里定义版本,例如:

class NewGem VERSION = '0.0.1‘end

  • 最终通过rake install安装gem。在完成此操作之前,您将无法将其加载到IRB中。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8104002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档