Gemfile 和插件改进

你好,Discourse 团队

我想为插件目录中的 Gemfile 以及在需要时添加外部 gems 提供一个有趣的解决方案:

# 加载插件的 Gemfile
Dir.glob File.expand_path("../plugins/*/{Gemfile}", __FILE__) do |file|
  eval_gemfile file
end

如果我们将此添加到主 Gemfile 中,就可以加载来自插件的 Gemfile。
让我们讨论一下这个解决方案。

附:eval_gemfile 的 DSL 文档 = https://apidock.com/ruby/v2_6_3/Bundler/Dsl/eval_gemfile

2 个赞

这很有趣!目前,插件可以通过在 plugin.rb 文件中列出完整的递归依赖树来要求使用 gem,例如:

2 个赞

谢谢,这正是我想要的。
但我觉得我的决定对我来说更清晰、更易理解。
原因(个人看法):

  1. 我们让 plugin.rb 保持更简洁
  2. Gemfile 对 Rails 开发者来说更易理解。
1 个赞

不幸的是,这意味着锁定文件将变得不断变化,而我们将它包含在源代码控制中。

Gem 文件虽然不错,但在我们能够发布增量锁定文件之前,此类解决方案将无法奏效。