[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_json 是 raw_data.to_json,而 nil.to_json 是 "null",因此构建列车的集合序列化为 null。类的侧面也未使用,没有声明 attr_mapping,而 BuildTrains.all 会调用 Spaceship::ConnectAPI::Build.all,而不是通过继承的客户端调用。BuildTrains 与 Hash 相比增加了 get/[]、values 和 versions - Hash#[]、Hash#values 和 Hash#keys。两个调用者在仓库中都只使用最后两个:
trains.values.flatten # test_flight/build.rb:111
self.build_trains(platform: ...).versions # tunes/application.rb:312Spaceship 在其他地方以不同的方式处理此问题。Portal::Persons 是一个复数,仅具有类方法 - Persons.all 返回一个普通 Array,并且没有对象实例化 Persons。Tunes::BuildTrain.all 同样返回一个普通 Hash。BuildTrains 是 spaceship 中唯一一个实例化自己的复数类。
内容来源: fastlane/fastlane