Commit dce26700 authored by gfyoung's avatar gfyoung 🤔

Enable frozen string in app/serializers/**/*.rb

Partially addresses #47424.
parent e23b966d
Pipeline #26372218 failed with stages
in 80 minutes and 59 seconds
# frozen_string_literal: true
class AnalyticsBuildEntity < Grape::Entity
include RequestAwareEntity
include EntityDateHelper
......
# frozen_string_literal: true
class AnalyticsBuildSerializer < BaseSerializer
entity AnalyticsBuildEntity
end
# frozen_string_literal: true
class AnalyticsCommitEntity < CommitEntity
include EntityDateHelper
......
# frozen_string_literal: true
class AnalyticsCommitSerializer < BaseSerializer
entity AnalyticsCommitEntity
end
# frozen_string_literal: true
class AnalyticsGenericSerializer < BaseSerializer
def represent(resource, opts = {})
resource.symbolize_keys!
......
# frozen_string_literal: true
class AnalyticsIssueEntity < Grape::Entity
include RequestAwareEntity
include EntityDateHelper
......
# frozen_string_literal: true
class AnalyticsIssueSerializer < AnalyticsGenericSerializer
entity AnalyticsIssueEntity
end
# frozen_string_literal: true
class AnalyticsMergeRequestEntity < AnalyticsIssueEntity
expose :state
......
# frozen_string_literal: true
class AnalyticsMergeRequestSerializer < AnalyticsGenericSerializer
entity AnalyticsMergeRequestEntity
end
# frozen_string_literal: true
class AnalyticsStageEntity < Grape::Entity
include EntityDateHelper
......
# frozen_string_literal: true
class AnalyticsStageSerializer < BaseSerializer
entity AnalyticsStageEntity
end
# frozen_string_literal: true
class AnalyticsSummaryEntity < Grape::Entity
expose :value, safe: true
expose :title
......
# frozen_string_literal: true
class AnalyticsSummarySerializer < BaseSerializer
entity AnalyticsSummaryEntity
end
# frozen_string_literal: true
class AwardEmojiEntity < Grape::Entity
expose :name
expose :user, using: API::Entities::UserSafe
......
# frozen_string_literal: true
class BaseSerializer
attr_reader :params
......
# frozen_string_literal: true
class BlobEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class BuildActionEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class BuildArtifactEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class BuildDetailsEntity < JobEntity
expose :coverage, :erased_at, :duration
expose :tag_list, as: :tags
......
# frozen_string_literal: true
class BuildMetadataEntity < Grape::Entity
expose :timeout_human_readable
expose :timeout_source do |metadata|
......
# frozen_string_literal: true
class BuildSerializer < BaseSerializer
entity JobEntity
......
# frozen_string_literal: true
class ClusterApplicationEntity < Grape::Entity
expose :name
expose :status_name, as: :status
......
# frozen_string_literal: true
class ClusterEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class ClusterSerializer < BaseSerializer
entity ClusterEntity
......
# frozen_string_literal: true
class CohortActivityMonthEntity < Grape::Entity
include ActionView::Helpers::NumberHelper
......
# frozen_string_literal: true
class CohortEntity < Grape::Entity
include ActionView::Helpers::NumberHelper
......
# frozen_string_literal: true
class CohortsEntity < Grape::Entity
expose :months_included
expose :cohorts, using: CohortEntity
......
# frozen_string_literal: true
class CohortsSerializer < AnalyticsGenericSerializer
entity CohortsEntity
end
# frozen_string_literal: true
class CommitEntity < API::Entities::Commit
include RequestAwareEntity
......
# frozen_string_literal: true
module WithPagination
attr_accessor :paginator
......
# frozen_string_literal: true
class ContainerRepositoriesSerializer < BaseSerializer
entity ContainerRepositoryEntity
end
# frozen_string_literal: true
class ContainerRepositoryEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class ContainerTagEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class ContainerTagsSerializer < BaseSerializer
entity ContainerTagEntity
......
# frozen_string_literal: true
class DeployKeyEntity < Grape::Entity
expose :id
expose :user_id
......
# frozen_string_literal: true
class DeployKeySerializer < BaseSerializer
entity DeployKeyEntity
end
# frozen_string_literal: true
class DeployKeysProjectEntity < Grape::Entity
expose :can_push
expose :project, using: ProjectEntity
......
# frozen_string_literal: true
class DeploymentEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class DeploymentSerializer < BaseSerializer
entity DeploymentEntity
......
# frozen_string_literal: true
class DiffFileEntity < Grape::Entity
include RequestAwareEntity
include BlobHelper
......
# frozen_string_literal: true
class DiffsEntity < Grape::Entity
include DiffHelper
include RequestAwareEntity
......
# frozen_string_literal: true
class DiffsSerializer < BaseSerializer
entity DiffsEntity
end
# frozen_string_literal: true
class DiscussionEntity < Grape::Entity
include RequestAwareEntity
include NotesHelper
......
# frozen_string_literal: true
class DiscussionSerializer < BaseSerializer
entity DiscussionEntity
end
# frozen_string_literal: true
module EntityDateHelper
include ActionView::Helpers::DateHelper
include ActionView::Helpers::TagHelper
......@@ -50,15 +52,20 @@ module EntityDateHelper
elsif entity.due_date
is_upcoming = (entity.due_date - Date.today).to_i > 0
time_ago = time_ago_in_words(entity.due_date)
content = time_ago.gsub(/\d+/) { |match| "<strong>#{match}</strong>" }
content.slice!("about ")
content << " " + (is_upcoming ? _("remaining") : _("ago"))
content.html_safe
# https://gitlab.com/gitlab-org/gitlab-ce/issues/49440
#
# Need to improve the i18n here and do a full translation
# of the string instead of piecewise translations.
content = time_ago
.gsub(/\d+/) { |match| "<strong>#{match}</strong>" }
.remove("about ")
remaining_or_ago = is_upcoming ? _("remaining") : _("ago")
"#{content} #{remaining_or_ago}".html_safe
elsif entity.start_date && entity.start_date.past?
days = entity.elapsed_days
content = content_tag(:strong, days)
content << " #{'day'.pluralize(days)} elapsed"
content.html_safe
days = entity.elapsed_days
"#{content_tag(:strong, days)} #{'day'.pluralize(days)} elapsed".html_safe
end
end
end
# frozen_string_literal: true
class EntityRequest
# We use EntityRequest object to collect parameters and variables
# from the controller. Because options that are being passed to the entity
......
# frozen_string_literal: true
class EnvironmentEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class EnvironmentSerializer < BaseSerializer
include WithPagination
......
# frozen_string_literal: true
class GroupChildEntity < Grape::Entity
include ActionView::Helpers::NumberHelper
include RequestAwareEntity
......
# frozen_string_literal: true
class GroupChildSerializer < BaseSerializer
include WithPagination
......
# frozen_string_literal: true
class GroupEntity < Grape::Entity
include ActionView::Helpers::NumberHelper
include RequestAwareEntity
......
# frozen_string_literal: true
class GroupSerializer < BaseSerializer
include WithPagination
......
# frozen_string_literal: true
class GroupVariableEntity < Grape::Entity
expose :id
expose :key
......
# frozen_string_literal: true
class GroupVariableSerializer < BaseSerializer
entity GroupVariableEntity
end
# frozen_string_literal: true
class IssuableEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class IssuableSidebarEntity < Grape::Entity
include TimeTrackableEntity
include RequestAwareEntity
......
# frozen_string_literal: true
class IssueEntity < IssuableEntity
include TimeTrackableEntity
......
# frozen_string_literal: true
class IssueSerializer < BaseSerializer
# This overrided method takes care of which entity should be used
# to serialize the `issue` based on `basic` key in `opts` param.
......
# frozen_string_literal: true
class IssueSidebarEntity < IssuableSidebarEntity
expose :assignees, using: API::Entities::UserBasic
end
# frozen_string_literal: true
class JobEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class JobGroupEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class LabelEntity < Grape::Entity
expose :id, if: ->(label, _) { !label.is_a?(GlobalLabel) }
......
# frozen_string_literal: true
class LabelSerializer < BaseSerializer
entity LabelEntity
......
# frozen_string_literal: true
class LfsFileLockEntity < Grape::Entity
root 'locks', 'lock'
......
# frozen_string_literal: true
class LfsFileLockSerializer < BaseSerializer
entity LfsFileLockEntity
end
# frozen_string_literal: true
class MergeRequestBasicEntity < IssuableSidebarEntity
expose :assignee_id
expose :merge_status
......
# frozen_string_literal: true
class MergeRequestBasicSerializer < BaseSerializer
entity MergeRequestBasicEntity
end
# frozen_string_literal: true
class MergeRequestCreateEntity < Grape::Entity
expose :iid
......
# frozen_string_literal: true
class MergeRequestCreateSerializer < BaseSerializer
entity MergeRequestCreateEntity
end
# frozen_string_literal: true
class MergeRequestDiffEntity < Grape::Entity
include Gitlab::Routing
include GitHelper
......
# frozen_string_literal: true
class MergeRequestMetricsEntity < Grape::Entity
expose :latest_closed_at, as: :closed_at
expose :merged_at
......
# frozen_string_literal: true
class MergeRequestSerializer < BaseSerializer
# This overrided method takes care of which entity should be used
# to serialize the `merge_request` based on `serializer` key in `opts` param.
......
# frozen_string_literal: true
class MergeRequestUserEntity < UserEntity
include RequestAwareEntity
include BlobHelper
......
# frozen_string_literal: true
class MergeRequestWidgetEntity < IssuableEntity
expose :state
expose :in_progress_merge_commit_sha
......
# frozen_string_literal: true
class NoteAttachmentEntity < Grape::Entity
expose :url
expose :filename
......
# frozen_string_literal: true
class NoteEntity < API::Entities::Note
include RequestAwareEntity
include NotesHelper
......
# frozen_string_literal: true
class NoteUserEntity < UserEntity
unexpose :web_url
end
# frozen_string_literal: true
class PipelineDetailsEntity < PipelineEntity
expose :details do
expose :ordered_stages, as: :stages, using: StageEntity
......
# frozen_string_literal: true
class PipelineEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class PipelineSerializer < BaseSerializer
include WithPagination
entity PipelineDetailsEntity
......
# frozen_string_literal: true
class ProjectEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class ProjectMirrorEntity < Grape::Entity
expose :id
......
# frozen_string_literal: true
class ProjectNoteEntity < NoteEntity
expose :human_access do |note|
note.project.team.human_max_access(note.author_id)
......
# frozen_string_literal: true
class ProjectNoteSerializer < BaseSerializer
entity ProjectNoteEntity
end
# frozen_string_literal: true
class ProjectSerializer < BaseSerializer
entity ProjectEntity
end
# frozen_string_literal: true
module RequestAwareEntity
extend ActiveSupport::Concern
......
# frozen_string_literal: true
class RunnerEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class StageEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class StageSerializer < BaseSerializer
include WithPagination
......
# frozen_string_literal: true
class StatusEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class SubmoduleEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
module TimeTrackableEntity
extend ActiveSupport::Concern
extend Grape
......
# frozen_string_literal: true
class TreeEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
# TODO: Inherit from TreeEntity, when `Tree` implements `id` and `name` like `Gitlab::Git::Tree`.
class TreeRootEntity < Grape::Entity
include RequestAwareEntity
......
# frozen_string_literal: true
class TreeSerializer < BaseSerializer
entity TreeRootEntity
end
# frozen_string_literal: true
class UserEntity < API::Entities::UserBasic
include RequestAwareEntity
......
# frozen_string_literal: true
class UserSerializer < BaseSerializer
entity UserEntity
end
# frozen_string_literal: true
class VariableEntity < Grape::Entity
expose :id
expose :key
......
# frozen_string_literal: true
class VariableSerializer < BaseSerializer
entity VariableEntity
end
---
title: Enable frozen string in app/serializers/**/*.rb
merge_request: 20726
author: gfyoung
type: performance
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment