从 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
。
我尝试了以下方法来解决这个问题:
- 在模块定义后添加
extend Utils
- 将
Fastlane
或 Fastlane::Actions
包含到模块中
这些对我没有帮助。
还有其他方法可以解决这个问题吗?
我已经得到了这样一个使用依赖注入的实用程序:
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(有点冗长,但可能是更易于维护的选项)。
俗话说“不打框架!”
我正在尝试制作一个 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
。
我尝试了以下方法来解决这个问题:
- 在模块定义后添加
extend Utils
- 将
Fastlane
或Fastlane::Actions
包含到模块中
这些对我没有帮助。
还有其他方法可以解决这个问题吗?
我已经得到了这样一个使用依赖注入的实用程序:
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(有点冗长,但可能是更易于维护的选项)。
俗话说“不打框架!”