2010-08-04 81 views
2

我有我想要在我自己的Rails应用程序之间移植的功能。为Rails 3创建插件或宝石?

我想知道是否应该为每个要移动(可共享)的功能创建一个gem或插件。

他们只是为Rails(现在),因为他们包括CSS,HTML,JS和图像文件。

但我一直在想,提供插件的东西也可以提供宝石,但不是相反?所以也许最好学习如何创建宝石,因为那么你我不必学习如何创建宝石和插件?现在,宝石似乎更受欢迎。

但是,从我所能理解的一个gem在操作系统中的所有rails应用程序之间共享。那意味着我无法为每个Rails应用程序定制它?在这种情况下,可能创建一个插件更好,因为它应该被允许自定义(编辑css,js等)每个功能并将其存储在Rails应用程序本身内而不是操作系统级别。

一些建议,将不胜感激!

UPDATE:

所以宝石与CSS,HTML,JS和图像文件的伟大工程?在插件中,我认为你可以拥有一个MVC,你自己的模型,视图和控制器。引自Rails指南“在您的插件中存储模型,视图,控制器,帮助器,甚至其他插件”。这可能也是宝石?例如。我想添加一个扩展程序,该扩展程序为我提供了一个很好的购物车(具有自己的迁移,mvc,资产文件),这些购物车将被挂钩到当前的Rails应用程序中。这可能是宝石还是仅作为插件?

回答

2

你说得对,宝石比插件提供多一点。对我来说,版本控制和其他宝石的依赖关系是主要的。

一个宝石不需要在使用ruby的所有内容中共享。您可以安装单个宝石的多个版本,并在您的environment.rb中指定宝石需要特定版本。例如。

config.gem 'my-gem', :version => '1.2.3' 

此外,您可以将宝石冻结到您的rails应用程序中,以便您知道您正在使用特定版本。

你可能想看看jeweler gem这使得创建自己的宝石更容易。

UPDATE

要包括CSS,JavaScript的等我想你会需要做一个Rails的引擎,然后可以捆绑为一个插件或宝石。我没有这样做,但有一些涵盖herehere

+0

链接到珠宝商宝石似乎被破坏: http://github.com/technicalpickles/jeweler – 2010-08-04 21:00:32

+0

请参阅我更新的职位。 – 2010-08-04 21:07:07

+1

我已修复珠宝链接。干杯。 – Shadwell 2010-08-04 21:08:35

2

Rails 3的推动似乎是针对宝石,而不是插件,因为已经增加了很多支持,使宝石的工作效果比以往的插件还要好。构建良好的gem是不同应用程序之间共享的好东西,同时也减少了您必须执行的测试数量,因为您可以在集成之前彻底测试gem。

对于使用CSS,HTML和其他资源的Rails的扩展,可能需要构建一个引擎来将其全部捆绑起来,并允许它整齐地放入应用程序中。

+0

“你需要建立一个引擎来捆绑这一切”。你是什​​么意思的引擎?您的意思是您可以使用工程师创建的Rails引擎(又名Rails应用程序内的Rails应用程序)? – 2010-08-05 03:46:43

+0

那种事,是的。有很多方法来构建它们,就像宝石一样。这是一个有一些文档和例子的网站:http://rails-engines.org/ – tadman 2010-08-05 13:57:25