fjordllc / bootcamp

プログラマー向けEラーニングシステム
https://bootcamp.fjord.jp
MIT License
282 stars 71 forks source link

NoMethodError: undefined method `content' for nil:NilClass published_at: atom_item.published.content, ^^^^^^^^ #6901

Closed komagata closed 10 months ago

komagata commented 1 year ago

View details in Rollbar: https://app.rollbar.com/a/komagata/fix/item/Bootcamp/1498



NoMethodError: undefined method `content' for nil:NilClass

        published_at: atom_item.published.content,
                                         ^^^^^^^^
  File "/app/app/models/external_entry.rb", line 82, in save_atom_feed
  File "/app/app/models/external_entry.rb", line 26, in block (3 levels) in fetch_and_save_rss_feeds
  File "/app/app/models/external_entry.rb", line 24, in each
  File "/app/app/models/external_entry.rb", line 24, in block (2 levels) in fetch_and_save_rss_feeds
  File "/usr/local/bundle/gems/activerecord-6.1.4.7/lib/active_record/relation/delegation.rb", line 88, in each
  File "/usr/local/bundle/gems/activerecord-6.1.4.7/lib/active_record/relation/delegation.rb", line 88, in each
  File "/app/app/models/external_entry.rb", line 19, in block in fetch_and_save_rss_feeds
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promises.rb", line 1582, in evaluate_to
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promises.rb", line 1765, in block in on_resolvable
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb", line 352, in run_task
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb", line 343, in block (3 levels) in create_worker
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb", line 334, in loop
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb", line 334, in block (2 levels) in create_worker
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb", line 333, in catch
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb", line 333, in block in create_worker
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promises.rb", line 1257, in raise
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promises.rb", line 1257, in wait_until_resolved!
  File "/usr/local/bundle/gems/concurrent-ruby-1.1.10/lib/concurrent-ruby/concurrent/promises.rb", line 977, in wait!
  File "/app/app/models/external_entry.rb", line 34, in fetch_and_save_rss_feeds
  File "/app/app/controllers/scheduler/daily/fetch_external_entry_controller.rb", line 5, in show
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal/basic_implicit_render.rb", line 6, in send_action
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/abstract_controller/base.rb", line 228, in process_action
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal/rendering.rb", line 30, in process_action
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/abstract_controller/callbacks.rb", line 42, in block in process_action
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb", line 117, in block in run_callbacks
  File "/usr/local/bundle/gems/react-rails-2.6.2/lib/react/rails/controller_lifecycle.rb", line 31, in use_react_component_helper
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb", line 126, in block in run_callbacks
  File "/usr/local/bundle/gems/active_decorator-1.4.0/lib/active_decorator/view_context.rb", line 37, in block (3 levels) in <module:Filter>
  File "/usr/local/bundle/gems/active_decorator-1.4.0/lib/active_decorator/view_context.rb", line 25, in run_with
  File "/usr/local/bundle/gems/active_decorator-1.4.0/lib/active_decorator/view_context.rb", line 36, in block (2 levels) in <module:Filter>
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb", line 126, in instance_exec
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb", line 126, in block in run_callbacks
  File "/usr/local/bundle/gems/actiontext-6.1.4.7/lib/action_text/rendering.rb", line 20, in with_renderer
  File "/usr/local/bundle/gems/actiontext-6.1.4.7/lib/action_text/engine.rb", line 59, in block (4 levels) in <class:Engine>
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb", line 126, in instance_exec
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb", line 126, in block in run_callbacks
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/callbacks.rb", line 137, in run_callbacks
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/abstract_controller/callbacks.rb", line 41, in process_action
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal/rescue.rb", line 22, in process_action
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal/instrumentation.rb", line 34, in block in process_action
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/notifications.rb", line 203, in block in instrument
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/notifications/instrumenter.rb", line 24, in instrument
  File "/usr/local/bundle/gems/activesupport-6.1.4.7/lib/active_support/notifications.rb", line 203, in instrument
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal/instrumentation.rb", line 33, in process_action
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal/params_wrapper.rb", line 249, in process_action
  File "/usr/local/bundle/gems/activerecord-6.1.4.7/lib/active_record/railties/controller_runtime.rb", line 27, in process_action
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/abstract_controller/base.rb", line 165, in process
  File "/usr/local/bundle/gems/actionview-6.1.4.7/lib/action_view/rendering.rb", line 39, in process
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal.rb", line 190, in dispatch
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_controller/metal.rb", line 254, in dispatch
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_dispatch/routing/route_set.rb", line 50, in dispatch
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_dispatch/routing/route_set.rb", line 33, in serve
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_dispatch/journey/router.rb", line 50, in block in serve
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_dispatch/journey/router.rb", line 32, in each
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_dispatch/journey/router.rb", line 32, in serve
  File "/usr/local/bundle/gems/actionpack-6.1.4.7/lib/action_dispatch/routing/route_set.rb", line 842, in call
  File "/usr/l
komagata commented 1 year ago

@siso25 RSSを読み込むときにこういうエラーが起きてるみたいです〜。

siso25 commented 1 year ago

@komagata Issueを作成いただきましてありがとうございます。 Atomフィード内に作成日(任意項目)が存在しないときにatom_item.publishedがnilとなり、nilオブジェクトに対してcontentの値を取得しようとしたためにエラーとなっています。

atom_item.published&.contentとすることで回避は可能ですが、みんなのブログの表示順を作成日の降順としているため、作成日をnilで登録するとうまく並び替えることができません。そのため、作成日がnilの場合は記事の取得日時(バッチ実行日時)を設定しようと考えていますが、いかがでしょうか。

komagata commented 1 year ago

@siso25 published以外にそれっぽい日付はフィード中にあったりしませんかね?(フィード全体の最終更新日など) できれば取得日時を設定するのは最終手段で、そういうものを優先的に設定したい感じがします。

siso25 commented 1 year ago

@komagata Atomに関しては、必須項目で「記事ごとの最終更新日」と「フィード全体の最終更新日」がありました。 また、RSS1.0とRSS2.0については任意項目で「フィード全体の最終更新日」がありました。 そのため、みんなのブログで使用する作成日については、それぞれ以下の優先順位で設定を行おうと思っております。

komagata commented 1 year ago

@siso25 了解です。上記でお願いします〜

github-actions[bot] commented 10 months ago

このissue|PRは60日間更新がないため7日後にcloseします。closeしたくない場合はstaleラベルを外してください。

komagata commented 10 months ago

@siso25 こちらは完了してますかね?

siso25 commented 10 months ago

@komagata 先ほど確認いただきました、以下PRのリリース後にクローズしたいと思います。

siso25 commented 10 months ago

@komagata お疲れ様です。 こちらですが、リリース後に同様のエラーは発生していないでしょうか。 お手数ですが定期実行結果の確認をお願いします。

komagata commented 10 months ago

@siso25 エラーは発生してないです〜

siso25 commented 10 months ago

@komagata ご確認ありがとうございます。 本番環境のみんなのブログが日々日々更新されていること、同様のエラーが発生していないことが確認できましたので、本issueをクローズさせていただきます。