Skip to content

Commit

Permalink
Replace outdated ActiveModel::Serializers by Panko::Serializer
Browse files Browse the repository at this point in the history
  • Loading branch information
byroot committed Feb 15, 2021
1 parent 37ea030 commit b31b185
Show file tree
Hide file tree
Showing 31 changed files with 145 additions and 163 deletions.
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
source 'https://rubygems.org'

gemspec
gem 'panko_serializer', github: 'panko-serializer/panko_serializer'

gem 'sqlite3'

Expand Down
14 changes: 10 additions & 4 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
GIT
remote: https://github.com/panko-serializer/panko_serializer.git
revision: 36f457528c2865585c32767847469ac20c60558b
specs:
panko_serializer (0.7.4)
oj (~> 3.10.0)

PATH
remote: .
specs:
shipit-engine (0.33.0)
active_model_serializers (~> 0.9.3)
ansi_stream (~> 0.0.6)
attr_encrypted (~> 3.1.0)
autoprefixer-rails (~> 6.4.1)
Expand All @@ -15,6 +21,7 @@ PATH
lodash-rails (~> 4.6.1)
octokit (~> 4.15)
omniauth-github (~> 1.4)
panko_serializer (~> 0.7.4)
pubsubstub (~> 0.2.0)
rails (~> 6.0.0)
rails-timeago (~> 2.13.0)
Expand Down Expand Up @@ -69,9 +76,6 @@ GEM
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
active_model_serializers (0.9.8)
activemodel (>= 3.2)
concurrent-ruby (~> 1.0)
activejob (6.0.3.5)
activesupport (= 6.0.3.5)
globalid (>= 0.3.6)
Expand Down Expand Up @@ -185,6 +189,7 @@ GEM
octokit (4.20.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
oj (3.10.18)
omniauth (1.9.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
Expand Down Expand Up @@ -337,6 +342,7 @@ DEPENDENCIES
mini_racer
mocha
mysql2
panko_serializer!
pg
pry
rubocop
Expand Down
13 changes: 0 additions & 13 deletions app/controllers/concerns/shipit/active_model_serializers_patch.rb

This file was deleted.

5 changes: 3 additions & 2 deletions app/controllers/concerns/shipit/api/rendering.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ module Rendering
private

def render_resources(resources, options = {})
options[:json] = resources
options[:json] = Panko::ArraySerializer.new(resources, each_serializer: Serializer.for(resources)).to_json
render(options)
end

Expand All @@ -15,7 +15,8 @@ def render_resource(resource, options = {})
elsif resource.errors.any?
render(options.reverse_merge(status: :unprocessable_entity, json: { errors: resource.errors }))
else
render(options.reverse_merge(json: resource))
serializer = Serializer.for(resource).new
render(options.reverse_merge(json: serializer.serialize(resource)))
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/shipit/api/hooks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ def index
end

def show
render(json: hook)
render_resource(hook)
end

params do
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/shipit/tasks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def abort
end

def tail
render(json: TailTaskSerializer.new(task, context: { last_byte: params[:last_byte].to_i }))
render(json: TailTaskSerializer.new(context: { last_byte: params[:last_byte].to_i }).serialize(task))
end

def lookup
Expand Down
6 changes: 6 additions & 0 deletions app/models/shipit/anonymous_user.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
# frozen_string_literal: true
module Shipit
class AnonymousUser
class << self
def attribute_aliases
{}.freeze
end
end

def present?
false
end
Expand Down
4 changes: 2 additions & 2 deletions app/models/shipit/hook.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,8 +101,8 @@ def listening_event(event)
def coerce_payload(payload)
coerced_payload = payload.dup
payload.each do |key, value|
if serializer = ActiveModel::Serializer.serializer_for(value)
coerced_payload[key] = serializer.new(value)
if serializer = Serializer.for(value)
coerced_payload[key] = serializer.new.serialize(value)
end
end
coerced_payload.to_json
Expand Down
23 changes: 0 additions & 23 deletions app/serializers/concerns/shipit/conditional_attributes.rb

This file was deleted.

25 changes: 11 additions & 14 deletions app/serializers/shipit/commit_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,13 @@
module Shipit
class CommitSerializer < ShortCommitSerializer
include GithubUrlHelper
include ConditionalAttributes

has_one :author
has_one :committer
has_one :author, serializer: UserSerializer
has_one :committer, serializer: UserSerializer

attributes :additions, :deletions, :authored_at, :committed_at, :html_url, :pull_request, :status, :deployed

def deployed
object.deployed?
end
aliases deployed?: :deployed

def status
object.status.state
Expand All @@ -22,14 +19,14 @@ def html_url
end

def pull_request
{
number: object.pull_request_number,
html_url: github_pull_request_url(object),
}
end

def include_pull_request?
object.pull_request?
if object.pull_request?
{
number: object.pull_request_number,
html_url: github_pull_request_url(object),
}
else
SKIP
end
end
end
end
11 changes: 3 additions & 8 deletions app/serializers/shipit/deploy_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ module Shipit
class DeploySerializer < TaskSerializer
include GithubUrlHelper

has_many :commits
has_many :commits, serializer: CommitSerializer
has_one :rollback_once_aborted_to, serializer: DeploySerializer

attributes :compare_url, :rollback_url, :additions, :deletions, :rollback_once_aborted_to
attributes :compare_url, :rollback_url, :additions, :deletions

def html_url
stack_deploy_url(object.stack, object)
Expand All @@ -22,11 +23,5 @@ def rollback_url
def type
:deploy
end

def rollback_once_aborted_to
return nil unless object.rollback_once_aborted_to

DeploySerializer.new(object.rollback_once_aborted_to)
end
end
end
10 changes: 2 additions & 8 deletions app/serializers/shipit/hook_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
# frozen_string_literal: true
module Shipit
class HookSerializer < ActiveModel::Serializer
include ConditionalAttributes

has_one :stack
class HookSerializer < Serializer
has_one :stack, serializer: StackSerializer
attributes :id, :url, :delivery_url, :content_type, :events, :insecure_ssl, :created_at, :updated_at

def url
Expand All @@ -13,9 +11,5 @@ def url
api_hook_url(object)
end
end

def include_stack?
object.scoped?
end
end
end
13 changes: 8 additions & 5 deletions app/serializers/shipit/merge_request_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# frozen_string_literal: true
module Shipit
class MergeRequestSerializer < ActiveModel::Serializer
class MergeRequestSerializer < Serializer
include GithubUrlHelper
include ConditionalAttributes

has_one :merge_requested_by
has_one :merge_requested_by, serializer: UserSerializer
has_one :head, serializer: ShortCommitSerializer

attributes :id, :number, :title, :github_id, :additions, :deletions, :state, :merge_status, :mergeable,
Expand All @@ -14,8 +13,12 @@ def html_url
github_pull_request_url(object)
end

def include_rejection_reason?
object.rejection_reason?
def rejection_reason
if object.rejection_reason?
object.rejection_reason
else
SKIP
end
end
end
end
11 changes: 7 additions & 4 deletions app/serializers/shipit/pull_request_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
# frozen_string_literal: true

module Shipit
class PullRequestSerializer < ActiveModel::Serializer
class PullRequestSerializer < Serializer
include GithubUrlHelper
include ConditionalAttributes

has_one :user
has_one :user, serializer: UserSerializer
has_one :head, serializer: ShortCommitSerializer
has_many :assignees, serializer: UserSerializer

attributes :id, :number, :title, :github_id, :additions, :deletions, :state, :html_url

def html_url
github_pull_request_url(object) if object.stack.present?
if object.stack.present?
github_pull_request_url(object)
else
SKIP
end
end
end
end
4 changes: 2 additions & 2 deletions app/serializers/shipit/review_stack_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module Shipit
class ReviewStackSerializer < Shipit::StackSerializer
has_one :pull_request
class ReviewStackSerializer < StackSerializer
has_one :pull_request, serializer: PullRequestSerializer
end
end
4 changes: 2 additions & 2 deletions app/serializers/shipit/rollback_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ def type
:rollback
end

def include_rollback_url?
false
def rollback_url
SKIP
end
end
end
17 changes: 17 additions & 0 deletions app/serializers/shipit/serializer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# frozen_string_literal: true
module Shipit
class Serializer < Panko::Serializer
include Engine.routes.url_helpers
class << self
def for(object)
if object.nil?
self
elsif object.is_a?(Array)
self.for(object.first)
else
"#{object.class.name}Serializer".safe_constantize
end
end
end
end
end
2 changes: 1 addition & 1 deletion app/serializers/shipit/short_commit_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true
module Shipit
class ShortCommitSerializer < ActiveModel::Serializer
class ShortCommitSerializer < Serializer
attributes :sha, :message

def message
Expand Down
Loading

0 comments on commit b31b185

Please sign in to comment.