【问题标题】:Call Fastlane actions from a ruby module从 ruby​​ 模块调用 Fastlane 操作
【发布时间】:2020-11-02 10:24:09
【问题描述】:

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

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

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

  • 在模块定义后添加extend Utils
  • 在模块中包含FastlaneFastlane::Actions

这些对我没有帮助。

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

【问题讨论】:

  • 它是一颗宝石吗?命名之间有些混乱,在某处你写了fastlane 和某处fastfile。你能验证一下吗?
  • @zhisme,是的,Fastlane 是一颗宝石。 Fastfile 是您使用 Fastlane 编写代码的文件(如我的示例中所示)。这是 Fastlane 文档 - docs.fastlane.tools/getting-started/ios

标签: ruby fastlane


【解决方案1】:

我已经得到了一个这样的工具来使用依赖注入:

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)都在Fastlane::Lane's 块内执行,该块由Fastfile 实例化。

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

俗话说,“不与框架为敌!”

【讨论】:

    猜你喜欢
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 2012-11-11
    • 2017-07-24
    • 2011-01-24
    • 1970-01-01
    • 2021-11-28
    相关资源
    最近更新 更多