我正在尝试使用我在 Fastfile 中使用的一些帮助函数来制作一个 ruby 模块。它看起来如下:
lane :a do |options|
Utils.foo
end
module Utils
def self.foo
get_info_plist_value(...)
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试运行车道时,我收到此错误:undefined method 'get_info_plist_value' for Utils:Module。
我尝试了以下方法来解决这个问题:
extend Utils在模块定义之后添加Fastlane或Fastlane::Actions进入模块这些对我没有帮助。
还有其他方法可以解决问题吗?
小智 3
我已经得到了一个像这样的实用程序,可以使用依赖注入来工作:
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
Run Code Online (Sandbox Code Playgroud)
:a如果您查看声明的“lane”(例如 )的剖析,每个操作(如get_info_plist_value )都在Fastlane::Lane 的块内执行,该块由Fastfile实例化。
尽管可能,但应谨慎使用编写调用 Fastlane 操作的实用程序。这似乎完全超出了 Fastlane 的预期用途范围。我认为处理此类问题的“正确”方法是实际编写自定义操作(更冗长一些,但可能是更易于维护的选项)。
俗话说“不要与框架对抗!”