从 ruby 模块调用 Fastlane 操作

Call Fastlane actions from a ruby module

我正在尝试制作一个 ruby 模块,其中包含我在 Fastfile 中使用的一些辅助函数。看起来如下:

lane :a do |options|
  Utils.foo
end

module Utils
  def self.foo
    get_info_plist_value(...)
  end
end

当我尝试 运行 车道时,出现此错误:undefined method 'get_info_plist_value' for Utils:Module

我尝试了以下方法来解决这个问题:

这些对我没有帮助。

还有其他方法可以解决这个问题吗?

我已经得到了这样一个使用依赖注入的实用程序:

lane :a do |options|
  Utils.call(self)
end

module Utils
  def initialize(lane)
     @lane = lane
  end

  def self.call(lane)
     new.execute(lane)
  end

  def execute
     @lane.get_info_plist_value(...)
  end
end

如果您查看声明的“通道”(例如 :a)的结构,每个动作(例如 get_info_plist_value) is executed within Fastlane::Lane's block, which was instantiated by the Fastfile.

虽然可能,但应谨慎使用调用 Fastlane 操作的实用程序。这似乎完全超出了 Fastlane 的预期用途范围。我认为处理这样​​的事情的“正确”方法实际上是 write a custom action(有点冗长,但可能是更易于维护的选项)。

俗话说“不打框架!”