現象
ci.yml の shards install が ameba の postinstall で失敗し、crystal tool format --check / ameba / crystal spec のいずれにも到達せずジョブが落ちる。
E: Failed postinstall of ameba on shards build -Dpreview_mt:
E: Error target ameba failed to compile:
In src/ameba/tokenizer.cr:88:15
88 | lexer.next_string_array_token
^----------------------
Error: undefined method 'next_string_array_token' for Crystal::Lexer (compile-time type is Crystal::Lexer+)
例: https://github.com/limit7412/github_notifications_slack/actions/runs/30989030572/job/92250490708
原因
ci.yml は crystal: latest を使っており、現在 Crystal 1.21.0 が入る
- Crystal 1.21 で
Crystal::Lexer#next_string_array_token が削除された
shard.yml の制約は ameba ~> 1.6 で、解決される最新の安定版は 1.6.4。1.6.4 はこのメソッドに依存しているためコンパイルできない
master の CI 最終成功は 2026-07-14 で、それ以降 master への push が無いため気付いていなかった。差分の内容によらず、いま PR を出すと必ず落ちる状態。
現状の上流
ameba の master には Crystal 1.21 対応が入っている(lexer.responds_to?(:next_string_array_token) で分岐)。ただしタグは v1.6.4 の次が v1.7.0-dev のみで、対応を含む安定版はまだリリースされていない。
対応案
- CI の Crystal を固定する(例:
crystal: 1.20.0)
- 変更が小さく再現性も上がる。ただし Crystal を上げるまで ameba の問題が残る
- ameba を master に追従させる(
branch: master もしくは修正コミットを commit: で固定)
- すぐ Crystal 1.21 に乗れるが、バージョン管理としては緩くなる。コミット固定なら実害は小さい
- ameba 1.7.0 のリリースを待つ
- それまで CI が赤のままになるため、単独では選べない
1 か 2(あるいは併用)を想定。どちらを採るかは方針次第。
影響
いずれも差分自体は無関係だが、この問題で CI が赤のままになっている。
現象
ci.ymlのshards installが ameba の postinstall で失敗し、crystal tool format --check/ ameba /crystal specのいずれにも到達せずジョブが落ちる。例: https://github.com/limit7412/github_notifications_slack/actions/runs/30989030572/job/92250490708
原因
ci.ymlはcrystal: latestを使っており、現在 Crystal 1.21.0 が入るCrystal::Lexer#next_string_array_tokenが削除されたshard.ymlの制約はameba ~> 1.6で、解決される最新の安定版は 1.6.4。1.6.4 はこのメソッドに依存しているためコンパイルできないmaster の CI 最終成功は 2026-07-14 で、それ以降 master への push が無いため気付いていなかった。差分の内容によらず、いま PR を出すと必ず落ちる状態。
現状の上流
ameba の master には Crystal 1.21 対応が入っている(
lexer.responds_to?(:next_string_array_token)で分岐)。ただしタグはv1.6.4の次がv1.7.0-devのみで、対応を含む安定版はまだリリースされていない。対応案
crystal: 1.20.0)branch: masterもしくは修正コミットをcommit:で固定)1 か 2(あるいは併用)を想定。どちらを採るかは方針次第。
影響
いずれも差分自体は無関係だが、この問題で CI が赤のままになっている。