class Fastlane::FastFile
def method_missing(method_sym, *arguments, &_block)
def method_missing(method_sym, *arguments, &_block) method_str = method_sym.to_s method_str.delete!('?') # as a `?` could be at the end of the method name # First, check if there is a predefined method in the actions folder class_name = method_str.fastlane_class + 'Action' class_ref = nil begin class_ref = Fastlane::Actions.const_get(class_name) rescue NameError # Action not found # Is there a lane under this name? return self.runner.try_switch_to_lane(method_sym, arguments) end # It's important to *not* have this code inside the rescue block # otherwise all NameErrors will be catched and the error message is # confusing if class_ref && class_ref.respond_to?(:run) # Action is available, now execute it return self.runner.execute_action(method_sym, class_ref, arguments) else raise "Action '#{method_sym}' of class '#{class_name}' was found, but has no `run` method.".red end end