我最近在使用Rails Engines方面做了一些工作,特别是考虑让RefineryCMS和Spree在同一个安装上工作,但有关计划和已在边缘轨道上开发的信息很少。所以我想知道是否有人错过了Rails + 1计划的地方。
我调查过:
答案 0 :(得分:6)
在这个阶段你最好的选择是阅读Rails各个部分的CHANGELOG
文件,并尝试从中获取:
除此之外,GitHub的提交可以提供更多的洞察力(哈哈哈,我很有趣,嘿?)或灯塔有时候很有助于找到变化背后的原因。
我希望当Rails 3.1发布时,会有一个非常类似3.0 Release Notes详细说明更改的文章。至于谁对此负责,没有人知道。
对于Refinery和Spree,这两个项目都需要将它们的代码分成单独的模块而不是污染全局命名空间。控制器(例如PagesController
)需要成为Refinery::PagesController
。需要将此控制器的视图移至app/views/refinery/pages
,模型将位于引擎本身的app/models/refinery
内。
这样做的原因是应用程序能够使用自己的类污染“全局”命名空间,而不会覆盖引擎的功能。它还可以阻止引擎踩到彼此的脚趾。
让Refinery和Spree都这样做的问题将是双重的。 1)如果你听说过“放牧猫”这个短语,它就会变得相似,除了用狂暴的僵尸狮子代替猫。 2)您将破坏与使用Spree或Refinery的每个单一应用程序的向后兼容性。
答案 1 :(得分:1)
我在Refinery CMS核心团队工作。
我们已经考虑过让Spree和Refinery一起运行一段时间了。
Refinery CMS升级到Rails 3,认证引擎更改为与Spree相同,以便更容易地在两者之间进行集成。这就是已经完成的事情。
就计划的内容而言,我们正在等待Rails 3.1问世,因为有几个功能可以使两个项目并行运行变得更加容易。 Rails 3.1中包含的重要功能之一是能够对Rails引擎进行范围化,因此它不会干扰其他任何内容。