代码之家  ›  专栏  ›  技术社区  ›  Brendon McLean

Rails引擎取决于应用程序代码?

  •  1
  • Brendon McLean  · 技术社区  · 14 年前

    我们有一个不寻常的安排。我们有一个Rails应用程序,我们向客户出售它。我们还将成捆的业务功能打包成可选的附加组件,客户可以根据需要购买这些附加组件。我们把它们作为Rails插件/引擎来完成,以保持它们之间的良好分离。

    这就迫使我们的所有业务插件都依赖于应用程序本身。换句话说,框架在主Rails应用文件夹中,而业务模块在供应商/插件中。换句话说,如果他们依赖某个特定的应用程序文件夹,他们就很难成为插件。或者是它们?

    这确实有效,所以我的问题是出于对建筑的好奇心,而不是寻求帮助。但这是否应被视为插件/引擎系统的滥用?或者这是Rails引擎的一个潜在的有用应用吗?

    Brendon。

    1 回复  |  直到 11 年前
        1
  •  1
  •   tadman    14 年前

    我不知道插件有什么问题,只要它们是合格的并且容易理解。Rails插件没有Rails就什么都不是,它通常需要特定的版本。

    糟糕的设计是有一个插件,如果不能正确加载,它会破坏应用程序,而不是产生某种有用的消息。例如,您可以先测试环境,然后再以英尺为单位启动。

    这样做的一种非常暴力的方式,但至少是提供反馈,在插件的初始值设定项中可能是这样的:

    unless (defined?(MyApp))
      raise "MyAppPlugin requires MyApp to be installed"
    end
    

    您可以通过为应用程序制作私有的gems并更正式地设置需求来更优雅地完成这项工作。新的邦德勒系统使这成为可能。