@@ -14,27 +14,29 @@ namespace :news do
1414 logger . info ( '==== START news:fetch ====' )
1515
1616 # 本番/開発環境では実フィード、それ以外(テスト環境など)ではテスト用フィード
17- DOJO_NEWS_FEED = 'https://news.coderdojo.jp/feed/'
18- PRTIMES_NEWS_FEED = 'https://prtimes.jp/companyrdf.php?company_id=38935'
19- TEST_NEWS_FEED = Rails . root . join ( 'spec' , 'fixtures' , 'sample_news.rss' )
20- RSS_FEED_LIST = ( Rails . env . test? || Rails . env . staging? ) ?
17+ DOJO_NEWS_FEED = 'https://news.coderdojo.jp/feed/'
18+ PR_TIMES_FEED = 'https://prtimes.jp/companyrdf.php?company_id=38935'
19+ TEST_NEWS_FEED = Rails . root . join ( 'spec' , 'fixtures' , 'sample_news.rss' )
20+ RSS_FEED_LIST = ( Rails . env . test? || Rails . env . staging? ) ?
2121 [ TEST_NEWS_FEED ] :
22- [ DOJO_NEWS_FEED , PRTIMES_NEWS_FEED ]
22+ [ DOJO_NEWS_FEED , PR_TIMES_FEED ]
2323
2424 # RSS のデータ構造を、News のデータ構造に変換
2525 fetched_items = RSS_FEED_LIST . flat_map do |feed |
2626 feed = RSS ::Parser . parse ( feed , false )
2727 feed . items . map { |item |
2828 # RSS 1.0 (RDF) と RSS 2.0 の両方に対応
2929 # RSS 2.0: pubDate, RSS 1.0 (RDF): dc:date
30+ # - PR TIMES: RSS 1.0 (RDF) 形式 - <rdf:RDF> タグ、dc:date フィールドを使用
31+ # - CoderDojo News: RSS 2.0 形式 - <rss version="2.0"> タグ、pubDate フィールドを使用
3032 published_at = if item . respond_to? ( :pubDate ) && item . pubDate
3133 item . pubDate
3234 elsif item . respond_to? ( :dc_date ) && item . dc_date
3335 item . dc_date
3436 else
3537 raise "Unexpected RSS format: neither pubDate nor dc:date found for item: #{ item . link } "
3638 end
37-
39+
3840 {
3941 'url' => item . link ,
4042 'title' => item . title ,
0 commit comments