回答

2

rails plugin new创建一个空的宝石,立即钩入轨道。所以它确实创建了一个“框架”供您填写。

然后,您仍然需要bundlerjeweler实际将该组文件转换为gem并发布它。

你会从这两者中选择一个有点味道的问题。最近我发现很多人实际上都在鼓吹使用bundler。但与bundler它仍然主要是一个手动过程。

我个人认为使用jeweler仍然很有趣。什么是使用珠宝商的优点:

  • 使用Gemfile在任何栏杆或其他项目,珠宝商将生成对应于一个gemspec。请注意,这与来自bundler名气的Yehuda相反:他建议手动填写gemspec,然后让Gemfile通过在文件中指定gemspec来使用它。
  • 增加了一套rake任务,使您的生活更轻松发布和建立你的宝石
  • 可以方便的版本管理
  • 用git很好的整合,将自动标记,推,提交。

总之我仍然推荐使用jeweler,做完rails plugin new之后。

希望这会有所帮助。

0

由于宝石更易于安装和管理,因此最好使用jeweler来创建宝石。寻找灵感的最好方法是打开Rails集成的任何gem的源代码,并看看它们是如何实现的。通常这是通过Railties设施完成的。

3

通常,Ruby gems非常简单,Rails插件只是以某种方式触及Rails API的gem。 (正如另一个答案指出的,Railtie是钩入Rails的好方法)。要编写一个宝石,指定一个文件夹,并在它:

  • <gemname>.gemspec:此列出了宝石的名称,版本,作者,网站,宝石依赖列表和文件列表中的宝石包括。 (Rails'plugin new和Bundler gem都会为你生成良好的.gemspecs,见下文)
  • lib/<gemname>.rb:这是你的宝石的主要代码。通常这包含一个以宝石命名的类或模块。 (Rails'plugin new随模块一起提供)。

其他的都是可选的,但良好的做法包括:

  • test/spec/:这是你的测试去。由于Rails插件通常用于应用程序,因此Rails的plugin newtest/中制作了一个虚拟应用程序。如果你的gem非常独立,没有明确的Rails集成,你不需要虚拟应用程序。
  • 自述文件,用于描述您的宝石的功能以及如何使用。

你可以手工将这个文件夹和,关键的是,.gemspec文件完全,但是这两个工具会给你以下几点:

捆扎机为您做的:

  • 创建Gemfile并自动包含您的套件中的<gemname>.gemspec中指定的相关性(它是单个的Gemfile命令,gemspec
  • 创建样本<gemname>.gemspec为你设置它以从你的设备上拉出你的宝石版本lib/<gemname>/version.rb
  • 设置使用Git生成一个gem文件列表(方便,但是gem-building机器需要安装Git)。通常我使用Rake来做这件事,但它更烦人。

Rails的plugin new做的Gemfile.gemspec,就像捆扎机。另外:

  • Rails使用Ruby来生成gemfiles列表。尼斯。
  • 它为您设置了一个最小的目录结构,大部分是空的。
  • 它设置了一个样本测试和一个完整的虚拟应用程序(!)供测试运行。我只是看到了这一点,它让我成为天才。

的Rails也会让你Rakefile,添加耙任务,这两种工具将预先配置的.gitignore GIT中忽略一些常见的产品。

要在实际应用中测试您的宝石,请执行gem build <gemname>.gemspec,并将gem <gemname>添加到您的应用的Gemfile。这将创建一个-gem文件,其中包含整个gem。你可以gem install <gemname>-<version>.gem,Bundler会把它捡起来。

当您准备发布时,gem push <gemname>-<version>.gem会将其推送到RubyGems.org。有关获取帐户和推动宝石的详细信息,请参阅http://rubygems.org

此外,在开发过程中,您需要对宝石进行更改,而不必继续构建(和安装)版本。单元测试会照顾一些这一点,但如果你想直接从源使用的宝石,捆扎机有一个奇妙的工具:

gem <gemname>, :path => "<path/to/your/gems/folder>"

该文件夹是包含.gemspec文件中的一个。

有谁知道有任何理由使用珠宝商?我很想知道它比这些人做得更多。一般来说,一旦你有一个模板来复制和粘贴和修改,手写gemspec对我来说很容易。另外,如果我在每个工具给你的错误或遗漏方面做出了错误或遗漏,我已经将答案作为维基,以便它们得到纠正。

相关问题