Ruby 使用bundler在运行时加载依赖项

Ruby 使用bundler在运行时加载依赖项,ruby,rubygems,bundler,Ruby,Rubygems,Bundler,我有一个包含许多可选组件的应用程序,它们都有自己复杂的依赖关系。例如,某些部署可能希望使用LDAP功能,并且需要加载与LDAP相关的GEM。但很多人不会,那些不需要安装ldap相关gems的人不应该安装 根据用户(部署人员)启用的组件,如何使用Bundler加载这些依赖项 我不想强迫部署人员手动编辑他们的文件。必须能够通过应用程序的UI启用/禁用组件 仅仅在Gemfile中包含所有可能的依赖项并不理想。一些很少使用的组件需要大量复杂的本机编译。另一种解决方案可能是让应用程序编辑自己的文件。但这有

我有一个包含许多可选组件的应用程序,它们都有自己复杂的依赖关系。例如,某些部署可能希望使用LDAP功能,并且需要加载与LDAP相关的GEM。但很多人不会,那些不需要安装ldap相关gems的人不应该安装

根据用户(部署人员)启用的组件,如何使用Bundler加载这些依赖项

我不想强迫部署人员手动编辑他们的文件。必须能够通过应用程序的UI启用/禁用组件

仅仅在Gemfile中包含所有可能的依赖项并不理想。一些很少使用的组件需要大量复杂的本机编译。另一种解决方案可能是让应用程序编辑自己的文件。但这有点尴尬,可能需要在每次更改组件时重新启动


Bundler中有没有办法在运行时动态加载gems?如果没有,是否有类似Bundler的沙箱但允许动态加载的替代方案?

您可以提供多个gemfile并使用bundle install--gemfile来使用特定的gemfile,并且只安装部署所需的Gem

在应用程序中,您可以使用Bundle.setup和以前安装的gem文件的相应组来加载相应的gem

当然,这不是一个简单的好方法,但应该给你想要的功能


您可以提供多个Gemfiles并使用bundle install--gemfile来使用特定的gemfile,并且只安装部署所需的Gems

在应用程序中,您可以使用Bundle.setup和以前安装的gem文件的相应组来加载相应的gem

当然,这不是一个简单的好方法,但应该给你想要的功能


可能与此相关。感谢您的链接。我认为,如果功能请求得到满足,我们的状态会更好(just--with会更好),但我希望能够在我的应用程序代码中执行类似于“Bundle.gem”的调用。我有一种感觉,在Bundler当前的体系结构中,这可能是不可能的,但我想知道是否还有其他类似的项目可以这样做。可能是相关的。谢谢你的链接安德鲁。我认为,如果功能请求得到满足,我们的状态会更好(just--with会更好),但我希望能够在我的应用程序代码中执行类似于“Bundle.gem”的调用。我有一种感觉,在Bundler当前的体系结构中,这可能是不可能的,但我想知道是否还有其他类似的项目可以这样做。