-
-
Notifications
You must be signed in to change notification settings - Fork 109
トップページの news セクションを RSS から自動生成 #1704
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@yasulab 現状、RSSフィードから取得したニュースタイトルには、絵文字が含まれるもの(例: 「🎲 ダイス〜」)と含まれないもの(例: 「DojoLetter〜」)が混在しています。 以下の2点の方針とその実装方法について、意見を伺いたいです🙌
![]() この方針で進めて問題ないでしょうか?🙌
この正規表現を使った判定方法で問題ないでしょうか? お忙しいところ恐縮ですが、お時間がある際にご確認をお願いいたします! 🙏 |
@nacchan99 ご提案ありがとうございます!以下の方針がよさそうですね!(๑˃̵ᴗ˂̵)b✨
@nacchan99 質問する前にまずは "Ruby 絵文字" で検索 して、よりシンプルな方法がないか調べてみましょう! 🔍 💨 https://www.google.com/search?q=Ruby+絵文字 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
一旦実装コード側についてコメントしています!
テストとタスクについては別途共有・相談させてください🙏
2025/07/16 朝会後に共有したこと
|
@nanophate actionsのワークフローについて、お手隙の際にコメントいただけると嬉しいです🙏 やりたいこと当PR内で以下の動きを確認できると嬉しいなと考えています。 ワークフローは main ブランチに存在しないと実行できないようなので、以下の方法を考えていますが認識良さそうでしょうか?
|
f577bcb でブランチでもワークフローが認識されました! |
上記の方法で、コミットした際にトリガーするように対応。一応、GitHub CLI を活用することで、手元からのトリガーが行えることも可能と確認 |
Claude finished @nacchan99's task —— View job Code Review CompleteReviewing this PR for code quality, potential bugs, performance considerations, security concerns, and test coverage. Review Checklist:
🔍 Detailed Code Review✅ Strengths
|
763dc0c
to
e221bbd
Compare
Claude finished @nacchan99's task —— View job Code Review CompleteReviewing this PR for code quality, potential bugs, performance considerations, security concerns, and test coverage. Review Checklist:
🔍 Detailed Code Review✅ Strengths
|
e221bbd
to
a607102
Compare
Claude finished @nacchan99's task —— View job Reviewing this PR for code quality, potential bugs, performance considerations, security concerns, and test coverage. Review Checklist:
🔍 Detailed Code Review✅ Strengths
|
CIテストのエラー解消のため、mainブランチをリベースして最新を取り込みました🙌 |
- に タスクを実装 - CoderDojo.jp の RSS フィードから記事タイトル、公開日、URL を取得して出力 - URL を ID として重複排除を実装 - をテスト用フィクスチャとして追加
- .github/workflows/fetch_news.yml を作成 - cron('0 0 * * *') で毎朝 9:00 JST に自動実行を設定 - workflow_dispatch による手動トリガーを有効化 - ruby/setup-ruby で から Ruby をセットアップ+bundler-cache を有効化 - news:fetch タスク実行後に db/news.yml の差分をコミット&プッシュする処理を追加
- title:string、url:string、published_at:datetime の Newsモデルを生成 - url カラムにユニークインデックスを追加し重複登録を防止 - spec/models/news_spec.rb にモデルスペック用ファイルを作成 - spec/factories/news.rb に FactoryBot ファクトリを追加
- lib/tasks/import_news.rake を作成し、db/news.yml の内容を News テーブルに upsert するタスクを実装 - db/news.yml を空の配列形式()で初期化
- home_controller.rb: - ニュースデータをDBから取得し、@news_itemsに格納するロジックを追加。 - 最新7件を公開日降順で表示する。 - show.html.erb: - ニュース表示部分をハードコードから@news_itemsを使った動的表示に変更。 - タイトルに既存の絵文字がない場合は「📰」を自動付与するロジックを実装。 - 各ニュースのリンク先をDBから取得したnews.urlに設定。 - news.yml: - fetchタスクによって更新された最新のニュースデータを含む。
@claude Can you convert this issue's description into Japanese? |
Claude finished @nacchan99's task —— View job コードレビュー完了 ✅Todo List:
🔍 詳細コードレビュー評価✅ 大幅な改善点
|
- SSRF対策として Net::HTTP + URL検証を導入 - open-uri の利用を廃止し safe_open メソッドを追加
- YAML.load_file から YAML.safe_load へ置き換え
@claude Can you convert this issue's description into Japanese? |
Claude finished @nacchan99's task —— View job コードレビューの日本語翻訳Todo List:
🔍 詳細コードレビュー評価✅ 大幅な改善点
|
@claude Can you review the two most recent commits and provide your feedback in Japanese? |
Claude finished @nacchan99's task —— View job 最新2つのコミットレビュー 🔍Todo List:
📝 レビュー対象コミット1.
|
@claude 今回のPRでカバーできていないテストについて、追加で作成すべきものがあれば教えてください! |
Claude finished @nacchan99's task —— View job I'll analyze this and get back to you. |
@claude Can you suggest additional tests we should add for this PR, in Japanese? |
Claude finished @nacchan99's task —— View job 追加テストの提案分析Todo List:
📋 現在のテストカバレッジ状況✅ 実装済みのテスト
❌ 未実装のテスト
🧪 追加すべきテスト一覧1. モデルテスト強化 (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
細かい調整をいくつかお願いしていますが、基本的な動作は良さそうです🙆♀️
Rakeタスクのリファクタリング、テストの追加については、別途issueにまとめて対応いただけると🙏
(必要なテストについて、専用issueで整理すると良さそうです)
- インデントを2スペースに統一 - validatesの値部分を縦に揃えて可読性を向上
- if/else/endの位置を揃えて可読性を向上 - feed_urls配列の末尾カンマを削除し、コメント位置も整理
- 「既存データをハッシュに変換」コメントのインデントを修正 - File.open内のformatted_items生成部分のインデントを整理
細部まで丁寧にレビューしていただき、ありがとうございます🙌 追加すべきテストや改善ポイントをまとめた新しい Issue を作成したので、お手隙の際にご確認いただけると嬉しいです🙏 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
纏めてになりますが、対応ありがとうございました!
以下を確認しました!良さそうです🙆♀️
- コメント部分の対応が完了もしくはissue化
- 最新のコードで動作確認
- Claude のレビューでも良さそう
#1704 (comment)この修正により、本PRはセキュリティ面での懸念が解消され、マージ可能な状態に達しました! 🚀
お忙しい中、丁寧にご確認いただきありがとうございます!🙌✨ その後は、新しいブランチで #1716 の対応を進める予定です。 |
Fixes #1577
この PR でやりたいこと
手作業で更新しているニュース一覧を 、RSS から自動取得して YAML 化し、CI/Actions で定期更新できるようにする
この PR でやること
1. 以下の RSS フィードをチェックするタスクを lib/tasks/fetch_news.rake に実装
https://coderdojo.jp/#news
(実際にはhttps://coderdojo.jp/feed
など)lib/tasks
配下に新規ファイルを作成2. RSS から記事タイトル/公開日/URL を抽出し YAML に追記・更新
db/news.yml
uniq
3. 上記タスクを GitHub Actions で毎朝 9:00 JST に実行
cron: '0 0 * * *'
(UTC0 = JST9:00)db/news.yml
を自動コミット4. 別途、CI(例: Heroku リリーススクリプト)で YAML から DB に保存
script/release.sh
にbundle exec rails news:import_from_yaml
を追記動作確認手順
1. ニュースYAMLを空にリセット
➡︎
db/news.yml
が空の配列になります(必要ならDBのニュースも削除)
➡︎この時点で
http://localhost:3000/#news
を開くと何も表示されません2. RSSを取得してYAMLを更新
bundle exec rails news:fetch
➡︎
db/news.yml
に最新のニュースデータが書き込まれます3. YAMLをデータベースに取り込む
bundle exec rails news:import_from_yaml
➡︎DB にニュースレコードが登録されます
4. ブラウザで動作確認
http://localhost:3000/#news
を開くテスト環境でのRSS取得確認(←この確認作業が必要かどうか検討中です🙌)
期待する結果:サンプルRSSから3件のニュースが取得される
なお、GitHub Actions や Heroku でのログ確認については、まだ十分に理解できていないため、今回の動作確認手順には含めておりません🙏
この PR でやらないこと
/blogs
で表示(拡張案)