Skip to content

Conversation

@yasulab
Copy link
Member

@yasulab yasulab commented Nov 1, 2025

概要

分離されていた news rake タスクをリファクタリングし、他のタスクとの設計一貫性を向上させました。

変更内容

🔄 Rake タスクのリファクタリング

  • lib/tasks/fetch_news.rakelib/tasks/import_news.rake を削除
  • lib/tasks/news.rake を新規作成(統合版)
  • 役割を明確に分離した2つのタスクを提供

📋 明確な役割分離(dojos タスクと同様)

タスク 役割 処理フロー
news:fetch フィード取得 RSS → YAML
news:upsert DB投入 YAML → DB

参考:既存の dojos タスクも同様の分離

  • dojos:update_db_by_yaml (YAML → DB)
  • dojos:migrate_adding_id_to_yaml (DB → YAML)

🎯 命名規則の一貫性

  • upsert = YAML からデータベースへの投入
  • fetch = 外部ソースからの取得
  • 他のタスクと同じ命名パターンを採用

🔄 運用フローの更新

  • script/release.sh: news:import_from_yamlnews:upsert に変更
  • .github/workflows/daily.yml: 既に news:fetch を使用(変更不要)

📅 処理フローの分離

GitHub Actions (daily.yml):
└─ news:fetch (RSS → YAML) → commit & push

Heroku Release Phase (script/release.sh):
└─ news:upsert (YAML → DB)

名前重要 の原則

  • 命名規則: fetch (外部→ファイル), upsert (ファイル→DB)
  • 役割分離: 1タスク1責務の原則
  • 運用連携: GitHub Actions + Heroku Release Phase
  • 一貫性: 既存タスクとの統一パターン

関連 Issue

Closes part of #1757 - News タスクの統合とコード整理

Issue #1757 の一部として、分離されていた news:fetch と news:import_from_yaml を
単一の news:upsert タスクに統合。他の rake タスクとの設計一貫性を保つ。

変更内容:
- lib/tasks/fetch_news.rake と lib/tasks/import_news.rake を削除
- lib/tasks/news.rake を新規作成(統合版)
- RSS フィードからデータベースまでを一貫処理
- 後方互換性のためエイリアスタスクを提供

他のタスクとの一貫性:
- podcasts:upsert (RSS → DB 直接)
- dojo_event_services:upsert (YAML → DB 直接)
- 同様の統合パターンを採用
RSS取得・インポートタスクなので、後方互換性は不要。
よりシンプルな実装に変更。

- news:fetch エイリアスを削除
- news:import_from_yaml エイリアスを削除
- news:upsert のみ提供
- news:fetch: RSS → YAML(フィード取得)
- news:upsert: YAML → DB(データベース投入)

dojos タスクと同様の明確な役割分離を実現:
- dojos:update_db_by_yaml (YAML → DB)
- dojos:migrate_adding_id_to_yaml (DB → YAML)

upsert の命名規則に従い、YAML からの DB 投入を upsert とする。
script/release.sh でタスク名を更新し、統合された news.rake の
正しいタスク名を使用する。
@yasulab yasulab merged commit afb64ca into main Nov 1, 2025
5 checks passed
@yasulab yasulab deleted the refactor-news-rake-tasks branch November 1, 2025 07:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants