将Rails应用程序提取到插件或引擎中

时间:2010-06-11 20:07:44

标签: ruby-on-rails ruby-on-rails-plugins

我有一个Rails 2.3应用程序,我想将其提取到插件或引擎中。该应用程序具有用户身份验证和祖先插件支持的基本cms功能。

我想将应用程序的逻辑提取到插件/引擎中,以便我可以将此代码用于将来的项目,如果需要,可以使用不同的“皮肤”或“主题”。

我并不完全确定我真正了解插件和引擎概念之间的区别,所以这将是一个很好的第一点。

什么是最好的方法,有什么好的起点,链接,解释,我应该遵循的例子。另外,随着R3的发布需要考虑,关于插件等,我应该注意哪些事情。

我将开始观看Ryan的http://railscasts.com/episodes/149-rails-engines 但显然这已经超过一年了,所以我面临的挑战之一就是找到关于这个主题的最新和相关信息。

感谢所有提示和帮助。

3 个答案:

答案 0 :(得分:4)

实际上,转换应用程序非常简单。只需创建一个插件文件夹,在其中放置一个包含所有yor model-views-controllers文件夹的app文件夹,就是这样。

您必须自己管理迁移。此外,您还必须定义rake-tasks以将文件复制到公用文件夹。我认为railscast仍然是最新的,如果有任何东西现在更容易在rails 2.3。

祝你好运!

[编辑:for rails3] Rails 3引擎非常干净和强大。请查看Jose Valim的gist

答案 1 :(得分:3)

您可能最好将引擎集中在Rails 3上,而不是试图使其与Rails 2和Rails 3兼容,因为向后不兼容的更改。这是一个更新的tutorial for Rails 3

Rails核心成员何塞·瓦利姆(Jose Valim)的书“Crafting Rails applications”也有一个很好的章节。他展示了如何使用生成Rails 3引擎结构的工具EngineX,这样您就可以更轻松地为Rails 3项目创建引擎。他的gem devise也是一个很好的rails引擎,因为你可以通过将模板复制到应用程序目录中来轻松地自定义它,并允许你对要自定义的控制器进行子类化。

答案 2 :(得分:1)

编写插件与编写应用程序完全不同,如果您已经拥有应用程序代码,则应该直接将其转换为插件。

请注意,如果您在应用中使用第三方插件,则可能会非常混乱。