annotaterb v4.22.0 commit log 流し読み
annotaterb v4.22.0 commit logを流しで読みました 👀
読んだコミットは下記です。
Run CI on CRuby 4.0 #308
CI にて実行されているマトリクスに Ruby 4.0 を追加しています。
Ruby 4.0 から benchmark, ostruct が bundled gem に変わったため Gemfile に明示されるようになりました。
refs: Run CI on CRuby 4.0#308
Use #lease_connection if available#292
connection が利用されている箇所を lease_connection を利用するように修正されています。
refs: Use #lease_connection if available
fix NoMethodError when using nested_position with fixture files#298
nested-position オプションを利用した際に NoMethodError が発生していました。原因は、YAML ファイル専用のカスタムパーサーに対して存在しないメソッドを呼び出していたことによるものです。
このコミットでは、該当箇所に適切なガード処理を追加し、メソッド呼び出しが行われないよう修正しています。
refs: fix NoMethodError when using nested_position with fixture files
Honor skip_on_db_migrate config option when runnig migrate tasks#274
skip_on_db_migrate オプションを指定していても、migration 実行時に annotation 処理がスキップされない状態になっていました。
このコミットでは、当該オプションが有効な場合に migration 実行時の annotation を実行しないよう制御を追加し、オプションの挙動が正しく反映されるよう修正しています。
refs: Honor skip_on_db_migrate config option when runnig migrate tasks
fix: Respect configured sort#295
classified_sort や sort オプションを利用している場合でも、既存の annotation にその設定が正しく反映されないことがある不具合の修正です。
従来の実装では、既存の annotation と新しく生成した annotation を比較する際に、どちらも sort してから差分を計算していました。そのため、実際には並び順がオプション通りになっていなくても、比較時にソートされてしまうことで「差分なし」と判定され、annotation が更新されない状態になっていました。
def generate
# Ignore the Schema version line because it changes with each migration
current_annotations = @file_content.match(HEADER_PATTERN).to_s
new_annotations = @annotation_block.match(HEADER_PATTERN).to_s
current_annotation_columns = if current_annotations.present?
current_annotations.scan(COLUMN_PATTERN).sort
else
[]
end
new_annotation_columns = if new_annotations.present?
new_annotations.scan(COLUMN_PATTERN).sort
else
[]
end
_result = AnnotationDiff.new(current_annotation_columns, new_annotation_columns)
end
今回の修正では、この sort を削除し、並び順も含めて差分を判定するように変更しています。これにより、classified_sort や sort オプションを使用しているにもかかわらず既存の annotation が設定通りでない場合、正しく差分が検出され、annotation が上書きされるようになりました。
def generate
# Ignore the Schema version line because it changes with each migration
current_annotations = @file_content.match(HEADER_PATTERN).to_s
new_annotations = @annotation_block.match(HEADER_PATTERN).to_s
current_annotation_columns = if current_annotations.present?
current_annotations.scan(COLUMN_PATTERN)
else
[]
end
new_annotation_columns = if new_annotations.present?
new_annotations.scan(COLUMN_PATTERN)
else
[]
end
_result = AnnotationDiff.new(current_annotation_columns, new_annotation_columns)
end
refs: fix: Respect configured sort
refactor: simplify primary key check logic (no functional changes)#285
特定カラムが FK かどうか判別するメソッドのリファクタリングを行っています。複雑な条件をシンプルになるように修正しています。
refs: refactor: simplify primary key check logic (no functional changes)