我应该使用新的Rails 3.1 rails plugin new
命令,珠宝商或捆绑器来创建我的第一个Ruby on Rails Gem吗?你会推荐哪些教程来帮助我开始编写用于Ruby on Rails的开源Gems?我应该使用哪种方法来创建我的第一个使用Rails 3.1的开源Ruby Gem?
回答
rails plugin new
创建一个空的宝石,立即钩入轨道。所以它确实创建了一个“框架”供您填写。
然后,您仍然需要bundler
或jeweler
实际将该组文件转换为gem并发布它。
你会从这两者中选择一个有点味道的问题。最近我发现很多人实际上都在鼓吹使用bundler
。但与bundler
它仍然主要是一个手动过程。
我个人认为使用jeweler
仍然很有趣。什么是使用珠宝商的优点:
- 使用
Gemfile
在任何栏杆或其他项目,珠宝商将生成对应于一个gemspec。请注意,这与来自bundler名气的Yehuda相反:他建议手动填写gemspec,然后让Gemfile
通过在文件中指定gemspec
来使用它。 - 增加了一套rake任务,使您的生活更轻松发布和建立你的宝石
- 可以方便的版本管理
- 用git很好的整合,将自动标记,推,提交。
总之我仍然推荐使用jeweler
,做完rails plugin new
之后。
希望这会有所帮助。
由于宝石更易于安装和管理,因此最好使用jeweler
来创建宝石。寻找灵感的最好方法是打开Rails集成的任何gem的源代码,并看看它们是如何实现的。通常这是通过Railties设施完成的。
通常,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 new
在test/
中制作了一个虚拟应用程序。如果你的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
对我来说很容易。另外,如果我在每个工具给你的错误或遗漏方面做出了错误或遗漏,我已经将答案作为维基,以便它们得到纠正。
- 1. 在iOS中使用Xamarin.iOS(C#)创建背景:我应该使用哪种方法?
- 2. 我应该使用哪种方法来实现此Storm拓扑?
- 3. 我应该使用哪种方法来清理文本区域?
- 4. 我应该在第一个Ruby on Rails应用程序中使用哪种类型的数据库?
- 5. 我应该为我的开源项目使用哪个许可
- 6. 我应该使用移动应用程序与Sorcery gem一起使用哪种验证方法?
- 7. 我应该在Rails 2.3.3中使用哪个版本的Ruby?
- 8. 我应该使用哪种技术来创建新应用程序?
- 9. 当我使用CodeIgniter构建我的第一个站点时,我应该使用哪些资源?
- 10. 我应该使用哪些Rails创业板来使用Resque重复创作?
- 11. 创建一个库应用程序 - 使用哪种方法?
- 12. 我应该使用哪个Rails Association?
- 13. 我应该使用哪个Rails插件?
- 14. 如果我想创建一个ruby/rails gem来管理CSS类的优先级,我会从哪里开始?
- 15. 我被要求建立一个webshop,我应该使用哪种脚本语言?
- 16. 我应该在哪种情况下使用DataSource的destroy方法?
- 17. 我应该使用这种方法吗?
- 18. 我应该采用哪种设计方法来创建此自定义视图?
- 19. 我应该在哪里放置我的第一个方法
- 20. 我应该使用哪种连接? [EF4.0代码第一]
- 21. 我应该使用哪种YouTube数据API认证方法?
- 22. 我们应该使用哪一种方法,用于存储我们CoreData对象
- 23. 我应该在Rails 3.1项目中使用哪些JSON宝石?
- 24. UrlEncoding - 我应该使用哪种编码?
- 25. 我应该使用哪种IVI参考?
- 26. 我应该使用哪种算法来更改/修改曲线
- 27. 我应该使用哪种IronPython IDE?
- 28. 我可以使用gitlab-rails来创建一个新的rails应用程序吗?
- 29. REST API中的“投票”资源应该使用哪种方法?
- 30. 我应该为我的iPhone应用使用哪种风格