#30239·fastlane

[spaceship] TestFlight::BuildTrains 是一个以 Spaceship::Base 为模型的集合

作者: lacostej创建于 2026年9月16日更新于 2026年9月17日
标签tool: spaceship

Spaceship::TestFlight::BuildTrains 继承了 Spaceship::Base,但持有一个 Hash,其中包含版本字符串 => 构建,而不是解析的 Apple 数据。这是 spaceship 中唯一一个覆盖了 initialize 方法的 Base 子类,并且它不调用 super,因此 Base#initialize 方法中的任何设置都不会发生。它继承的每个方法在活动实例上都是死的或错误的:

方法
raw_data nil
client nil
attributes []
setup 永远不会运行
inspect / to_s <Spaceship::TestFlight::BuildTrains\n>
to_json "null"

to_json 是唯一一个在活动实例上错误而不是空的:TestFlight::Base#to_jsonraw_data.to_json,而 nil.to_json"null",因此构建列车的集合序列化为 null。类的侧面也未使用,没有声明 attr_mapping,而 BuildTrains.all 会调用 Spaceship::ConnectAPI::Build.all,而不是通过继承的客户端调用。BuildTrainsHash 相比增加了 get/[]valuesversions - Hash#[]Hash#valuesHash#keys。两个调用者在仓库中都只使用最后两个:

ruby
trains.values.flatten                      # test_flight/build.rb:111
self.build_trains(platform: ...).versions  # tunes/application.rb:312

Spaceship 在其他地方以不同的方式处理此问题。Portal::Persons 是一个复数,仅具有类方法 - Persons.all 返回一个普通 Array,并且没有对象实例化 PersonsTunes::BuildTrain.all 同样返回一个普通 HashBuildTrains 是 spaceship 中唯一一个实例化自己的复数类。

内容来源: fastlane/fastlane