From a6ea2c9618dc36364ac77d9568d259f33f850dde Mon Sep 17 00:00:00 2001 From: Jan Klimo Date: Sat, 8 Aug 2020 20:41:44 +0700 Subject: [PATCH] Migrate serialization to jsonapi-serializer (#9682) This replaces the abandoned fast_jsonapi. --- Gemfile | 2 +- Gemfile.lock | 6 +++--- app/serializers/application_serializer.rb | 3 +++ app/serializers/search/article_serializer.rb | 4 +--- .../chat_channel_membership_serializer.rb | 4 +--- app/serializers/search/comment_serializer.rb | 4 +--- .../search/listing_author_serializer.rb | 4 +--- app/serializers/search/listing_serializer.rb | 4 +--- .../search/nested_user_serializer.rb | 4 +--- .../search/podcast_episode_serializer.rb | 4 +--- app/serializers/search/reaction_serializer.rb | 4 +--- app/serializers/search/tag_serializer.rb | 4 +--- app/serializers/search/user_serializer.rb | 4 +--- .../webhook/article_destroyed_serializer.rb | 3 +-- app/serializers/webhook/article_serializer.rb | 4 +--- app/serializers/webhook/event_serializer.rb | 4 +--- app/serializers/webhook/user_serializer.rb | 4 +--- vendor/cache/fast_jsonapi-1.5.gem | Bin 19968 -> 0 bytes vendor/cache/jsonapi-serializer-2.0.0.gem | Bin 0 -> 22016 bytes 19 files changed, 21 insertions(+), 45 deletions(-) create mode 100644 app/serializers/application_serializer.rb delete mode 100644 vendor/cache/fast_jsonapi-1.5.gem create mode 100644 vendor/cache/jsonapi-serializer-2.0.0.gem diff --git a/Gemfile b/Gemfile index 321e3cb19..e258fce8a 100644 --- a/Gemfile +++ b/Gemfile @@ -38,7 +38,6 @@ gem "email_validator", "~> 2.0" # Email validator for Rails and ActiveModel gem "emoji_regex", "~> 3.0" # A pair of Ruby regular expressions for matching Unicode Emoji symbols gem "envied", "~> 0.9" # Ensure presence and type of your app's ENV-variables gem "faraday-http-cache", "~> 2.2" # Middleware to handle HTTP caching -gem "fast_jsonapi", "~> 1.5" # Serializer for Ruby objects gem "fastly", "~> 2.5" # Client library for the Fastly acceleration system gem "feedjira", "~> 3.1" # A feed fetching and parsing library gem "field_test", "~> 0.4" # A/B testing @@ -58,6 +57,7 @@ gem "httparty", "~> 0.18" # Makes http fun! Also, makes consuming restful web se gem "inline_svg", "~> 1.7" # Embed SVG documents in your Rails views and style them with CSS gem "jbuilder", "~> 2.10" # Create JSON structures via a Builder-style DSL gem "jquery-rails", "~> 4.4" # A gem to automate using jQuery with Rails +gem "jsonapi-serializer", "~> 2.0" # Serializer for Ruby objects gem "kaminari", "~> 1.2" # A Scope & Engine based, clean, powerful, customizable and sophisticated paginator gem "katex", "~> 0.6.0" # This rubygem enables you to render TeX math to HTML using KaTeX. It uses ExecJS under the hood gem "liquid", "~> 4.0" # A secure, non-evaling end user template engine with aesthetic markup diff --git a/Gemfile.lock b/Gemfile.lock index c6c328c12..9e703a5d3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -298,8 +298,6 @@ GEM faraday (>= 0.8) faraday_middleware (1.0.0) faraday (~> 1.0) - fast_jsonapi (1.5) - activesupport (>= 4.2) fastimage (2.1.1) fastly (2.5.3) feedjira (3.1.1) @@ -423,6 +421,8 @@ GEM railties (>= 4.2.0) thor (>= 0.14, < 2.0) json (2.3.0) + jsonapi-serializer (2.0.0) + activesupport (>= 4.2) jwt (2.2.1) kaminari (1.2.1) activesupport (>= 4.1.0) @@ -885,7 +885,6 @@ DEPENDENCIES factory_bot_rails (~> 6.1) faker (~> 2.13) faraday-http-cache (~> 2.2) - fast_jsonapi (~> 1.5) fastly (~> 2.5) feedjira (~> 3.1) field_test (~> 0.4) @@ -910,6 +909,7 @@ DEPENDENCIES inline_svg (~> 1.7) jbuilder (~> 2.10) jquery-rails (~> 4.4) + jsonapi-serializer (~> 2.0) kaminari (~> 1.2) katex (~> 0.6.0) knapsack_pro (~> 2.1.1) diff --git a/app/serializers/application_serializer.rb b/app/serializers/application_serializer.rb new file mode 100644 index 000000000..91b2ab6b0 --- /dev/null +++ b/app/serializers/application_serializer.rb @@ -0,0 +1,3 @@ +class ApplicationSerializer + include JSONAPI::Serializer +end diff --git a/app/serializers/search/article_serializer.rb b/app/serializers/search/article_serializer.rb index 377762fd5..54b3431a0 100644 --- a/app/serializers/search/article_serializer.rb +++ b/app/serializers/search/article_serializer.rb @@ -1,7 +1,5 @@ module Search - class ArticleSerializer - include FastJsonapi::ObjectSerializer - + class ArticleSerializer < ApplicationSerializer attribute :id, &:search_id attributes :approved, :body_text, :class_name, :cloudinary_video_url, diff --git a/app/serializers/search/chat_channel_membership_serializer.rb b/app/serializers/search/chat_channel_membership_serializer.rb index 53ecd3492..9cd13db84 100644 --- a/app/serializers/search/chat_channel_membership_serializer.rb +++ b/app/serializers/search/chat_channel_membership_serializer.rb @@ -1,7 +1,5 @@ module Search - class ChatChannelMembershipSerializer - include FastJsonapi::ObjectSerializer - + class ChatChannelMembershipSerializer < ApplicationSerializer attributes :id, :status, :viewable_by, :chat_channel_id, :last_opened_at, :channel_text, :channel_last_message_at, :channel_status, :channel_status, :channel_type, :channel_username, :channel_name, diff --git a/app/serializers/search/comment_serializer.rb b/app/serializers/search/comment_serializer.rb index 944fe9be2..ca1fa14f3 100644 --- a/app/serializers/search/comment_serializer.rb +++ b/app/serializers/search/comment_serializer.rb @@ -1,7 +1,5 @@ module Search - class CommentSerializer - include FastJsonapi::ObjectSerializer - + class CommentSerializer < ApplicationSerializer attribute :id, &:search_id attributes :path, :public_reactions_count diff --git a/app/serializers/search/listing_author_serializer.rb b/app/serializers/search/listing_author_serializer.rb index 7f076d9fd..4e0cda39b 100644 --- a/app/serializers/search/listing_author_serializer.rb +++ b/app/serializers/search/listing_author_serializer.rb @@ -1,7 +1,5 @@ module Search - class ListingAuthorSerializer - include FastJsonapi::ObjectSerializer - + class ListingAuthorSerializer < ApplicationSerializer attributes :username, :name, :profile_image_90 end end diff --git a/app/serializers/search/listing_serializer.rb b/app/serializers/search/listing_serializer.rb index c8f3805c5..327ef39de 100644 --- a/app/serializers/search/listing_serializer.rb +++ b/app/serializers/search/listing_serializer.rb @@ -1,7 +1,5 @@ module Search - class ListingSerializer - include FastJsonapi::ObjectSerializer - + class ListingSerializer < ApplicationSerializer attributes :id, :body_markdown, :bumped_at, diff --git a/app/serializers/search/nested_user_serializer.rb b/app/serializers/search/nested_user_serializer.rb index 67898b9a2..b62e45e06 100644 --- a/app/serializers/search/nested_user_serializer.rb +++ b/app/serializers/search/nested_user_serializer.rb @@ -1,7 +1,5 @@ module Search - class NestedUserSerializer - include FastJsonapi::ObjectSerializer - + class NestedUserSerializer < ApplicationSerializer attributes :id, :name, :pro, :profile_image_90, :username end end diff --git a/app/serializers/search/podcast_episode_serializer.rb b/app/serializers/search/podcast_episode_serializer.rb index c32a945ec..3b55a9e18 100644 --- a/app/serializers/search/podcast_episode_serializer.rb +++ b/app/serializers/search/podcast_episode_serializer.rb @@ -1,7 +1,5 @@ module Search - class PodcastEpisodeSerializer - include FastJsonapi::ObjectSerializer - + class PodcastEpisodeSerializer < ApplicationSerializer attribute :id, &:search_id attributes :body_text, :class_name, :comments_count, :hotness_score, :path, diff --git a/app/serializers/search/reaction_serializer.rb b/app/serializers/search/reaction_serializer.rb index 5e06b7676..a0c6ee115 100644 --- a/app/serializers/search/reaction_serializer.rb +++ b/app/serializers/search/reaction_serializer.rb @@ -1,7 +1,5 @@ module Search - class ReactionSerializer - include FastJsonapi::ObjectSerializer - + class ReactionSerializer < ApplicationSerializer attributes :id, :category, :status, :user_id attribute :reactable do |reaction| diff --git a/app/serializers/search/tag_serializer.rb b/app/serializers/search/tag_serializer.rb index ce3f77190..ea87f90d0 100644 --- a/app/serializers/search/tag_serializer.rb +++ b/app/serializers/search/tag_serializer.rb @@ -1,7 +1,5 @@ module Search - class TagSerializer - include FastJsonapi::ObjectSerializer - + class TagSerializer < ApplicationSerializer attributes :id, :name, :hotness_score, :supported, :short_summary, :rules_html end end diff --git a/app/serializers/search/user_serializer.rb b/app/serializers/search/user_serializer.rb index 84391e996..3a22d02fd 100644 --- a/app/serializers/search/user_serializer.rb +++ b/app/serializers/search/user_serializer.rb @@ -1,7 +1,5 @@ module Search - class UserSerializer - include FastJsonapi::ObjectSerializer - + class UserSerializer < ApplicationSerializer attributes :id, :available_for, :comments_count, diff --git a/app/serializers/webhook/article_destroyed_serializer.rb b/app/serializers/webhook/article_destroyed_serializer.rb index 509627c03..785180093 100644 --- a/app/serializers/webhook/article_destroyed_serializer.rb +++ b/app/serializers/webhook/article_destroyed_serializer.rb @@ -1,6 +1,5 @@ module Webhook - class ArticleDestroyedSerializer - include FastJsonapi::ObjectSerializer + class ArticleDestroyedSerializer < ApplicationSerializer set_type :article attributes :title end diff --git a/app/serializers/webhook/article_serializer.rb b/app/serializers/webhook/article_serializer.rb index 6f9d7ad8a..13fd9ed35 100644 --- a/app/serializers/webhook/article_serializer.rb +++ b/app/serializers/webhook/article_serializer.rb @@ -1,7 +1,5 @@ module Webhook - class ArticleSerializer - include FastJsonapi::ObjectSerializer - + class ArticleSerializer < ApplicationSerializer set_type :article attributes :title, :description, :readable_publish_date, :cached_tag_list, :cached_tag_list_array, :slug, :path, :url, :comments_count, :public_reactions_count, :body_markdown diff --git a/app/serializers/webhook/event_serializer.rb b/app/serializers/webhook/event_serializer.rb index ea0995d13..528e98e5c 100644 --- a/app/serializers/webhook/event_serializer.rb +++ b/app/serializers/webhook/event_serializer.rb @@ -1,7 +1,5 @@ module Webhook - class EventSerializer - include FastJsonapi::ObjectSerializer - + class EventSerializer < ApplicationSerializer set_type :webhook_event set_id :event_id diff --git a/app/serializers/webhook/user_serializer.rb b/app/serializers/webhook/user_serializer.rb index c2359750c..ad0167309 100644 --- a/app/serializers/webhook/user_serializer.rb +++ b/app/serializers/webhook/user_serializer.rb @@ -1,7 +1,5 @@ module Webhook - class UserSerializer - include FastJsonapi::ObjectSerializer - + class UserSerializer < ApplicationSerializer attributes :name, :username, :twitter_username, :github_username attribute :website_url, &:processed_website_url attribute :profile_image do |user| diff --git a/vendor/cache/fast_jsonapi-1.5.gem b/vendor/cache/fast_jsonapi-1.5.gem deleted file mode 100644 index 56fcb6eb2049782c8d3055aacf26933b2d77ed20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19968 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

q9f|r>>Gd~;x0c8W4m0$=Fz;j@$+zOcUAjG{g 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 DtVg{I diff --git a/vendor/cache/jsonapi-serializer-2.0.0.gem b/vendor/cache/jsonapi-serializer-2.0.0.gem new file mode 100644 index 0000000000000000000000000000000000000000..70fc3c14fb93b66cf8dcea545e7a3863f7db64eb GIT binary patch literal 22016 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