2010-08-25 86 views

回答

3

基于对Toby答案的评论,您似乎希望能够将MVC应用程序用作新应用程序中的组件。 Rails引擎(请参阅http://rails-engines.org)提供了此功能。您只需安装引擎gem并将应用程序置于供应商/插件中,并且其模块/视图/控制器均可访问。

这并不符合HMVC中新应用程序中的控制器委托给其他控制器的情况。但是和托比一样,我没有看到它的优点。

是什么样的发动机办法很好的地方在于,你可以在只需添加一个版车型的新应用程序/模型文件夹中(同样适用于视图和控制器)

乘坐任何型号的插件

我拥有应用程序/视图/布局,使我的身份验证应用程序/插件具有与其包含的应用程序相同的外观和风格。

对于Rails 3 Railtie取代了引擎,并且官方支持(实际使用 - Action Mailer是一个Railtie插件,但我自己还没有用过它

Chec ķ它在http://edgeapi.rubyonrails.org/classes/Rails/Railtie.html

一个很好的写起来就可以了也在这里http://www.igvita.com/2010/08/04/rails-3-internals-railtie-creating-plugins/

+0

使用Rails插件Rails比Rails有什么区别/优点? – 2010-09-09 16:27:53

+0

Railtie的理由可以在这里找到http://www.engineyard.com/blog/2010/rails-and-merb-merge-rails-core-part-4-of-6/ – Will 2010-09-09 18:21:07

+0

从Railtie网站“开发Rails扩展并不需要Railtie的任何实现,但是如果您需要在启动期间或启动后与Rails框架进行交互,那么Railtie就是您需要进行交互的部分。“ – Will 2010-09-09 18:22:44

2

Rails长期以来都有插件。

我怀疑有一个技术原因,为什么控制器不能派遣到另一个控制器,沿链传递请求对象。我只是不知道你这样做会得到什么 - 图表看起来像意大利面条。

对我来说这是对MVC的滥用。我认为将逻辑推入较低级别的模型和类并创建一个面向该逻辑的单个控制器,而不是创建控制器链是更简单和更易于维护的。

+0

我不同意在这里。也许我正在添加一些可以独立运行的新功能......然后将它作为独立的MVC组件使用,而不是将所有内容整合到主应用程序MVC中,这样可以使其可用于其他项目。此外,您在图表中看到的那些MVC组件的每个人都可能来自第三方供应商。我不会在我的主应用程序MVC中混合它们。这张图似乎对我来说不是意大利面,它看起来结构非常好。代表,而不是把所有东西都放在一个大块中,这个块会变得越来越大。 – 2010-08-25 22:23:08

+0

我认为这是一个漏洞抽象。它带来的好处是,处理业务逻辑的结构良好的对象层无法以更细化且易于测试的方式实现? – 2010-08-26 01:15:31

+0

并投票给我,因为我对建筑风格有严肃和深思熟虑的保留有点苛刻。 – 2010-08-26 01:16:45

1

在Rails 3博客文章中,DHH提到the Cells项目。我没有使用它,但我会检查出来。

购物车示例显示了这种功能如何清理您的应用程序代码。检索数据的代码应放置在控制器中的某处。在每个动作或过滤器之前。 Cell似乎是更好的解决方案。