k8s-rails 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 708bfa5afaf656a7fb64a0ab781ef429eaa3f643d049d209941260178d6859d8
4
- data.tar.gz: e9a0184c46ad0e5afd2f66bfdb1857d7f170c9a573825363a6910087ff4b8995
3
+ metadata.gz: 68c7510c2b7f13f96331a6ef8868b05bdea468d6ba520cfa63e8215bff4b9e3d
4
+ data.tar.gz: 561dc0c3f7ef4789b20dcb687bd6c916503c46db85ba1318b492e4e2b286cd66
5
5
  SHA512:
6
- metadata.gz: e54a31eee779538219001aec14d679ca11ff2ec2334f7f97a4f6bcb77d274b4b477a032e092daa85333f318656dc2f00feb45d1f163aeb76e36196dfd985ba20
7
- data.tar.gz: 77ccd48603ee30f6145855fb6808001042bc5dd0cd74f6172a247fa6e2acef6bcde07a1ce21f497b9d823bf9b50f036ceb83aaa36daaabe5c85c07175e6b70ef
6
+ metadata.gz: 7fea71038d7a1cd7faf1af0bb7a411e69806ea118cf97b14998f0223075eab9fe22d3df040bc7f63e05ab8ac7cfe37e780ab0019f3c81738eedeb6d0ae54579f
7
+ data.tar.gz: 808ab971cd56198ca3620575fa1c94c6393b7a69bc86ea297f2fdd9b85780643381ca67fc0ca64348870c2edcccbc9f4e9516e27a36ca0e87a7c640bd93afedf
data/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  `k8s-rails` の全 notable な変更はこのファイルに記録する。
4
4
 
5
+ ## 0.2.1
6
+
7
+ - **Ruby 3.5 / 4.0 対応の宣言**(宣言範囲拡大のみ・コード・挙動変更なし):
8
+ 2026-09-22 に Ruby 4.0.7(stable・v4.0.7、2026-09-15 リリース)と
9
+ Ruby 3.5.0-preview1(3.5 系で公開済みの唯一のリリース)で全
10
+ rspec / rubocop を実行し緑を確認したため(kruby 1.36.4.1 は両方で
11
+ install / 動作確認)、`required_ruby_version` を `>= 3.3, < 4.0` から
12
+ **`>= 3.3, < 4.1`** に拡大。上限は検証済みの 4.0 系に設定し、
13
+ CI matrix は 3.3.0 / 3.3.8 / 3.4.10 / 3.5.0-preview1 / 4.0.7 の 5 系統で
14
+ 範囲内の公開済み Ruby を全カバー(宣言範囲 = 検証範囲)。
15
+ 設計書 KBR-DESIGN-001 v0.1.13(案)へ更新(§6 / §10 / §13 / §14)。
16
+
5
17
  ## 0.2.0
6
18
 
7
19
  - **cluster-scoped CRD サポート**(#17): `K8sRails.crd` に `scope: :namespaced`
data/README.md CHANGED
@@ -13,7 +13,7 @@ For the design rationale, see the [design document (docs/design.md)](docs/design
13
13
 
14
14
  | Item | Supported range | Notes |
15
15
  |------|-----------------|-------|
16
- | Ruby | `>= 3.3, < 4.0` | Floor: kruby 1.36.x requires Ruby 3.3. Upper bound: unverified Ruby 4.x is excluded from the declared range. CI verifies the declared range with a 3.3.0 / 3.3.8 / 3.4.10 matrix |
16
+ | Ruby | `>= 3.3, < 4.1` | Floor: kruby 1.36.x requires Ruby 3.3. Ruby 4.0 support verified on Ruby 4.0.7 (2026-09-22); Ruby 3.5 verified on 3.5.0-preview1 (the only released 3.5, 2026-09-22). CI verifies the declared range with a 3.3.0 / 3.3.8 / 3.4.10 / 3.5.0-preview1 / 4.0.7 matrix — every released Ruby in the range |
17
17
  | kruby | `~> 1.36.0` | The official Kubernetes OpenAPI client |
18
18
  | Kubernetes server | **Verified on v1.33.x** (a real cluster, microk8s v1.33.13, 2026-09-21) | kruby 1.36.x is a 1.36-series client. Newer servers (1.36, etc.) use the same API (CustomObjects API v1), so compatibility is expected, but has not yet been verified against a real cluster |
19
19
  | Dependencies | **kruby only** at runtime | ActiveSupport is used only for optional [instrumentation](#instrumentation-optional-activesupport) (no-op when absent) |
@@ -27,7 +27,7 @@ gem "k8s-rails", "~> 0.2"
27
27
 
28
28
  ```ruby
29
29
  require "k8s-rails"
30
- K8sRails::VERSION # => "0.2.0"
30
+ K8sRails::VERSION # => "0.2.1"
31
31
  ```
32
32
 
33
33
  `require` is side-effect-free and needs no cluster. kruby itself is loaded
@@ -246,8 +246,8 @@ issue first.
246
246
 
247
247
  ## Roadmap (v0.3+)
248
248
 
249
- - Ruby 3.5 / 4.0 support (after verifying against the stable releases, then
250
- widening the declared range and the CI matrix)
249
+ - Update the CI matrix when Ruby 3.5 reaches a stable release (3.5 is
250
+ verified today on 3.5.0-preview1, the only released 3.5)
251
251
  - CI-based E2E tests using kind
252
252
  - watch (streaming) support, under consideration
253
253
 
data/docs/design.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # k8s-rails 設計書
2
2
 
3
3
  - 文書番号: KBR-DESIGN-001
4
- - 版: 0.1.12(案)
4
+ - 版: 0.1.13(案)
5
5
  - 日付: 2026-09-15
6
6
  - 対象リポジトリ: k8s-rails(本設計の実装先)
7
7
  - ライセンス: MIT(LICENSE は main に既存)
@@ -106,7 +106,7 @@ k8s-rails/
106
106
  ├── lib/
107
107
  │ ├── k8s-rails.rb # エントリ。require 集 + モジュール定義
108
108
  │ └── k8s_rails/
109
- │ ├── version.rb # VERSION = "0.2.0"
109
+ │ ├── version.rb # VERSION = "0.2.1"
110
110
  │ ├── configuration.rb # Config: namespace, connection, 計測 ON/OFF
111
111
  │ ├── client.rb # 接続解決・BearerToken 橋渡し・計測ラップ
112
112
  │ ├── crd.rb # K8sRails.crd 宣言 → Resource 生成
@@ -269,7 +269,7 @@ end
269
269
 
270
270
  | 依存 | 制約 | 理由 |
271
271
  |---|---|---|
272
- | Ruby | `>= 3.3, < 4.0` | 下限: kruby 1.36.x が `required_ruby_version ">= 3.3"` を宣言(RubyGems API で実測 2026-09-21、1.36.0.1〜1.36.4.1 全バージョン)。上限: 「宣言した Ruby minor を必ず CI で検証する」方針(レビュー対応・2026-09-21)— 2026-09-21 時点で Ruby 4.0 stablev4.0.7)だが未検証、3.5 は preview(v3_5_0_preview1)のため、宣言範囲を 3.x に限定。4.0 / 3.5 対応は v0.3 で検証の上宣言に含める(§10) |
272
+ | Ruby | `>= 3.3, < 4.1` | 下限: kruby 1.36.x が `required_ruby_version ">= 3.3"` を宣言(RubyGems API で実測 2026-09-21、1.36.0.1〜1.36.4.1 全バージョン)。上限: 「宣言した minor を必ず CI で検証する」方針 2026-09-22 Ruby 4.0.7(stable)と Ruby 3.5.0-preview13.5 系で公開済みの唯一のリリース)で全 suite / rubocop を実行し緑を確認(matrix に 4.0.7 / 3.5.0-preview1 追加・v0.2.1)。この範囲で公開済みの Ruby 3.3.x / 3.4.x / 3.5.0-preview1 / 4.0.x のみ(ruby/ruby タグ実測・4.1 系リリースなし)のため宣言範囲 = 検証範囲。RubyGems は version requirement で集合和を表現できないため未検証 minor を区間で挟み込む形(`< 5.0` 等)は取らない。3.5 stable / 4.1 系がリリースされたら matrix を追加して検証(§10 / §13) |
273
273
  | `kruby` | `~> 1.36.0` | consumer アプリと同一 pin。`~> 1.36.0` は 1.36.x のみ許可(`~> 1.36` 形式は 1.37 以降も許容してしまうため使用しない)。新しめの kruby に対応する場合は §7 の確認事項(client.rb 8 メソッド(namespaced 4 + cluster 4)・K1 橋渡し・`default_config` 探索順序)を済ませてから明示的に上げ替える |
274
274
  | `activesupport` | **任意**(`>= 7.0`) | `defined?(ActiveSupport::Notifications)` でガード(計測のみ、§8)。Rails 無し環境(Cron スクリプト等)でも動作する必要がある — レスポンスの文字列キー化(K2)はこれに依存せず、gem 内部の純 Ruby 変換で担う(§5.2) |
275
275
  | `rspec` / `rubocop` | 開発依存 | spec / lint |
@@ -329,7 +329,7 @@ k8s-rails.request payload: { operation: :list, group:, version:, plural:, names
329
329
  |---|---|---|
330
330
  | **v0.1** | §5 の公開 API(CRD 宣言 / list / find / create / patch / 例外 / 計測 / スタブテスト)+ README | rspec 全緑 + **consumer アプリの K8s サービスを `k8s-rails` に移行して動作確認**(§12) |
331
331
  | **v0.2** | #16–#19 の公開 API 拡充・修正(cluster-scoped CRD `scope:` + `*_cluster` メソッド、`configure` のアトミック契約、`connected?` の注入契約、kruby loader 探索順序の修正)。設計書 v0.1.12(案) | rspec 全緑(クラスタ不要)+ 公開 gem push(v0.1.0 と同導線) |
332
- | v0.3 | watch(`watch` メソッド、kruby の watch サポート上)、core v1 built-in リソース対応(CustomObjects API では不可なため別途 core API 経路、§2.2)、kind E2E の CI 化、Ruby 3.5 / 4.0 対応(検証の上宣言範囲・matrix を拡大) | v0.2 運用のフィードバック |
332
+ | v0.3 | watch(`watch` メソッド、kruby の watch サポート上)、core v1 built-in リソース対応(CustomObjects API では不可なため別途 core API 経路、§2.2)、kind E2E の CI 化、Ruby 3.5 stable / 4.1 系の matrix 追加(リリースされたら検証の上追加。Ruby 3.5 preview / 4.0 は v0.2.1 で対応済み) | v0.2 運用のフィードバック |
333
333
  | v0.4 | (展望)複数クラスタ(ネームスペース化された client 集合)、リトライポリシー | — |
334
334
 
335
335
  v0.1 の milestone 分割(開発セッション向けのタスク単位目安):
@@ -397,12 +397,17 @@ PR の差分を最小化)。
397
397
  公開した gem のバージョンがどのコミットに基づくかを追跡できる。
398
398
  tag 名と gemspec の `VERSION` は一致させる
399
399
  - テスト CI(`.github/workflows/test.yml`)は push / PR 時に rspec + rubocop を実行。
400
- gemspec の宣言範囲(`>= 3.3, < 4.0`)を matrix で検証:
400
+ gemspec の宣言範囲(`>= 3.3, < 4.1`)で公開済みの Ruby を matrix で検証:
401
401
  3.3.0(下限・kruby 1.36.x の `>= 3.3`)・3.3.8(開発)・
402
- 3.4.10(3.x 系の最新 stable・2026-09-21 時点。3.5 は preview、
403
- 4.0 は宣言範囲外のため未検証・v0.3 で検討)。
404
- **宣言範囲を常に matrix がカバーする**こと(`< 4.0` 上限により、
405
- 4.x のリリースは宣言範囲外。stable 化された新 3.x minor が出たら
402
+ 3.4.10(3.4 系の最新 stable)・3.5.0-preview1(3.5 系の唯一の公開
403
+ リリース・2026-09-22 にローカルで全 suite / rubocop 検証済み)・
404
+ 4.0.7(4.0 系の最新 stable・2026-09-22 にローカルで全 suite /
405
+ rubocop 検証済み)。
406
+ **宣言範囲を常に matrix がカバーする**こと(`< 4.1` 上限により
407
+ 4.1 系以降のリリースは宣言範囲外。RubyGems は version requirement で
408
+ 集合和を表現できないため、未検証 minor を区間で挟み込む形
409
+ (`< 5.0` 等)は取らない — matrix 追加と範囲拡大をセットで行う。
410
+ 3.5 stable / 4.1 系等 stable 化された新リリースが出たら
406
411
  matrix への追加を忘れないこと)。
407
412
  テストはクラスタ不要(§9・スタブ注入)のため v0.1 は runner 上のユニットのみ。
408
413
  kind / 実クラスタ E2E の CI 化は v0.3 対象(§9・§10)
@@ -426,3 +431,4 @@ PR の差分を最小化)。
426
431
  | 0.1.10 | 2026-09-21 | PR #12 レビュー対応(Copilot): §13 の公開手順で tag の **remote への push**(`git push origin v<VERSION>`)が欠落しており、GitHub 上のリリースコミットとの対応付け(追溯性)が確保できないとの指摘を反映 | 実装反映済み |
427
432
  | 0.1.11 | 2026-09-22 | Issue #16–#19 対応: ①#16 `configure` の例外送出時は設定済みフラグをリセット(「一度だけ」はブロック正常終了時にのみ成立)。例外前に書かれた属性は残存することを契約として明文化(§5.1)②#17 `scope: :namespaced`(既定)/ `:cluster` を宣言 API に追加。cluster 系 4 メソッド(`list_cluster` / `find_cluster` / `find_or_nil_cluster` / `create_cluster` / `patch_cluster`)と双方向の ArgumentError 契約(§5.3)。transport は kruby の `*_cluster_custom_object` 4 メソッドを新たに使用③#18 `connected?` は `config.api_client` 注入時に I/O なしで `true`(§5.2)。注入下で Resource 操作と接続確認の挙動を一致させる④#19 kruby 1.36.x の loader 実装順(**KUBECONFIG → `~/.kube/config` → in-cluster**)を README / 設計書 / 設定コメントに明記し、§7 の上げ替え確認事項に探索順序の再確認を追加(in-cluster は最後。従来の「in-cluster → KUBECONFIG」記述は誤り) | 実装反映済み |
428
433
  | 0.1.12 | 2026-09-22 | PR #20 レビュー対応(Codex P2 + Copilot M/L 4 系統): ①#16 のリセット範囲を `rescue StandardError` から**任意の異常終了**(`LoadError` / `ScriptError` / `throw` / non-local return 等)に拡大(成功マーカー + `ensure` で実装、spec 2 件追加)。§5.1 / README の契約文言も「任意の異常終了」に修正②README の「`namespace:` 引数を受け取る」記述を namespaced メソッドに限定(`*_cluster` は受け付けない)③§6 の kruby 上げ替え確認事項を 8 メソッド + 探索順序に同期④`api_client` 注入スタブの契約を namespaced 4 + cluster 4 の 8 メソッドに統一(§5.1 表 / configuration.rb コメント / §9) | 実装反映済み |
434
+ | 0.1.13 | 2026-09-22 | v0.2.1 リリース準備 — Ruby 対応範囲の拡大・検証: ①Ruby 4.0.7(stable・v4.0.7)上で全 rspec / rubocop を実行し動作確認(kruby 1.36.4.1 の install / 動作を含む)②宣言範囲を **`>= 3.3, < 4.1`** に拡大(gemspec / §6 / README / test.yml)。上限は「宣言した minor を必ず CI で検証する」方針で検証済みの 4.0 系に設定(`< 5.0` 等未検証 minor を区間で挟み込む形は RubyGems が集合和を表現できないため不採用・§13 に明記)③RubyGems は `3.5.0-preview1` を範囲内に満たすため 3.5 も実際に対応・検証(3.5.0-preview1 で全 suite / rubocop 緑確認)。matrix は 3.3.0 / 3.3.8 / 3.4.10 / 3.5.0-preview1 / 4.0.7 の 5 系統で範囲内公開済み Ruby を全カバー(§13) | 実装反映済み |
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module K8sRails
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k8s-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dorian - Takahiro Ishida
@@ -116,7 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
116
  version: '3.3'
117
117
  - - "<"
118
118
  - !ruby/object:Gem::Version
119
- version: '4.0'
119
+ version: '4.1'
120
120
  required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ">="