【发布时间】:2012-03-06 16:46:29
【问题描述】:
我有一个包含许多可选组件的应用程序,它们都有自己的复杂依赖项。例如,某些部署可能想要使用 LDAP 功能并且需要加载与 ldap 相关的 gem。但很多人不会,那些不需要安装 ldap 相关的 gem。
如何根据用户(部署者)启用的组件,使用 Bundler 加载这些依赖项?
我不想强迫部署人员手动编辑他们的 Gemfile。必须可以通过应用程序的 UI 启用/禁用组件。
仅在 Gemfile 中包含所有可能的依赖项并不理想。一些很少使用的组件需要大量复杂的原生编译。另一种解决方案可能是让应用程序编辑自己的 Gemfile。但这有点尴尬,每次更改组件时都可能需要重新启动。
Bundler 中有没有办法在运行时动态加载 gem?如果没有,是否有提供类似于 Bundler 的沙盒但允许动态加载的替代方案?
【问题讨论】:
-
This Bundler feature request 可能是相关的。
-
感谢安德鲁的链接。我认为如果该功能请求得到满足,我们将处于更好的状态(只是 --with 会更好),但我希望可以在我的应用程序中执行类似 'Bundle.gem "gemname"' 的调用代码。我有一种感觉,这在 Bundler 当前的架构中可能是不可能的,但我想知道是否还有其他类似的项目可以做这样的事情。