Неверное количество аргументов (задано 0, ожидается 1) (ArgumentError) в сценарии быстрой полосы

Я добавил метод в свой сценарий fastlane:

# This is the minimum version number required.
# Update this, if you use features of a newer version
fastlane_version "2.28.2"

default_platform :ios

platform :ios do

    # some code was copied from fastlane/app_store_build_number
    def get_last_app_version(app_identifier)

        Spaceship::Tunes.login('[email protected]')
        Spaceship::Tunes.select_team

        app = Spaceship::Tunes::Application.find(app_identifier)

        train_numbers = app.all_build_train_numbers(platform: platform)
        self.order_versions(train_numbers).last
    end

    def self.order_versions(versions)
        versions.map(&:to_s).sort_by { |v| Gem::Version.new(v) }
    end

    # ....

end

И называет это в моем действии на быстрой полосе:

lane :get_ver do

    get_certificates(
        username: '[email protected]',
        team_name: 'Our team name'
        )

    app_version = get_last_app_version('com.some-app.ios')

    # further actions
end

Когда я запускаю get_ver действие, я получаю сообщение об ошибке wrong number of arguments (given 0, expected 1) и не могу понять, что не так

Метод, определенный с одним аргументом, и вызывающий тоже имеет один аргумент, в чем причина?

Также я попытался добавить имя аргумента:

get_last_app_version(app_identifier: 'com.some-app.ios')

убрать скобки:

get_last_app_version 'com.some-app.ios'

Но результат такой же

Полный вывод ошибок:

Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/fast_file.rb:112:in `platform': [!] wrong number of arguments (given 0, expected 1) (ArgumentError)
        from Fastfile:22:in `get_last_app_version'
        from Fastfile:58:in `block (2 levels) in parsing_binding'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/lane.rb:33:in `call'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/runner.rb:45:in `chdir'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/runner.rb:45:in `execute'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/lane_manager.rb:56:in `cruise_lane'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/commands_generator.rb:108:in `block (2 levels) in run'
        from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:178:in `call'
        from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/command.rb:153:in `run'
        from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/runner.rb:476:in `run_active_command'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:74:in `run!'
        from /Library/Ruby/Gems/2.3.0/gems/commander-fastlane-4.4.6/lib/commander/delegates.rb:15:in `run!'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/commands_generator.rb:333:in `run'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/commands_generator.rb:41:in `start'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/fastlane/lib/fastlane/cli_tools_distributor.rb:108:in `take_off'
        from /Library/Ruby/Gems/2.3.0/gems/fastlane-2.99.0/bin/fastlane:20:in `'
        from /usr/local/bin/fastlane:22:in `load'
        from /usr/local/bin/fastlane:22:in `'

person General Failure    schedule 11.07.2018    source источник


Ответы (1)


В вашем сообщении об ошибке говорится, что вы должны передать аргумент вызову метода platform, который происходит в этой строке:

train_numbers = app.all_build_train_numbers(platform: platform)
person Marek Lipka    schedule 11.07.2018
comment
Я обновил рассматриваемый код - теперь вы можете увидеть, что platform определен. По умолчанию он содержит fastlane скрипт, и я его не менял. Также сообщение об ошибке не содержит ничего о all_build_train_numbers. - person General Failure; 11.07.2018
comment
Хм ... Странно, но когда я устанавливаю значение platform напрямую (app.all_build_train_numbers(platform: :ios)) скрипт начинает работать. Спасибо, пойду дальше изучать фастлейн. - person General Failure; 11.07.2018
comment
Он не «определен», он вызывается с :ios аргументом. Это не значит, что вы можете ссылаться на его «значение» (что бы оно ни было) с помощью вызова platform. - person Marek Lipka; 11.07.2018