Bundler:允许用户在 UserGemfile 中添加 gem
Bundler: Allow user added gems in an UserGemfile
我正在开发一个 ruby/rails 应用程序,它应该可以通过添加插件高度扩展。一个插件 - 显然 - 一个 gem,它遵循特定的规则并包含库代码,一个 rails 引擎,包含资产、路由、控制器、视图等等。此外,还有某种 API 允许插件开发人员注册自定义条目以抽象应用程序的概念,例如添加 cronjobs(主系统中有某种 cron),向 CLI 添加命令等等.
应用随附的 Gemfile 中将包含一些 'builtin' 插件,因为它们是应用的一部分并且始终处于激活状态。并且将有一个社区编写的 gems 是可选的。
现在我正在寻找一种可能性,让在他的机器上安装该应用程序的用户可以向该应用程序附加 gems(包含插件)。
最简单(但不是最好)的解决方案是 "Just add the plugin gems you want to the Gemfile before running bundle install
)"。但是,如果应用程序有更新,Gemfile 可能会发生冲突,要么被重置,要么用户必须解决这些冲突。这其实是我不想要的。
更好的方式是说 "Hey, here's a UserGemfile, just add the plugin gems you want to that file and run bundle install
"。 UserGemfile
将列在 .gitignore
中,一切都会很好。
不幸的是,bundler 似乎不支持类似的东西。
您对如何解决这个问题有什么建议吗?
你可以做这样的事情,比如说,import_gems:
puts `cat Gemfile UserGemfile > EffectiveGemfile`
puts `bundle install --gemfile=EffectiveGemfile`
然后,当您 运行 您的应用程序时,指定 Gemfile:
BUNDLE_GEMFILE=EffectiveGemfile bundle list
确保将 EffectiveGemfile 和 EffectiveGemfile.lock 添加到 .gitignore。
我正在开发一个 ruby/rails 应用程序,它应该可以通过添加插件高度扩展。一个插件 - 显然 - 一个 gem,它遵循特定的规则并包含库代码,一个 rails 引擎,包含资产、路由、控制器、视图等等。此外,还有某种 API 允许插件开发人员注册自定义条目以抽象应用程序的概念,例如添加 cronjobs(主系统中有某种 cron),向 CLI 添加命令等等.
应用随附的 Gemfile 中将包含一些 'builtin' 插件,因为它们是应用的一部分并且始终处于激活状态。并且将有一个社区编写的 gems 是可选的。
现在我正在寻找一种可能性,让在他的机器上安装该应用程序的用户可以向该应用程序附加 gems(包含插件)。
最简单(但不是最好)的解决方案是 "Just add the plugin gems you want to the Gemfile before running bundle install
)"。但是,如果应用程序有更新,Gemfile 可能会发生冲突,要么被重置,要么用户必须解决这些冲突。这其实是我不想要的。
更好的方式是说 "Hey, here's a UserGemfile, just add the plugin gems you want to that file and run bundle install
"。 UserGemfile
将列在 .gitignore
中,一切都会很好。
不幸的是,bundler 似乎不支持类似的东西。
您对如何解决这个问题有什么建议吗?
你可以做这样的事情,比如说,import_gems:
puts `cat Gemfile UserGemfile > EffectiveGemfile`
puts `bundle install --gemfile=EffectiveGemfile`
然后,当您 运行 您的应用程序时,指定 Gemfile:
BUNDLE_GEMFILE=EffectiveGemfile bundle list
确保将 EffectiveGemfile 和 EffectiveGemfile.lock 添加到 .gitignore。