gitlab-org--gitlab-foss/lib/gitlab/gitaly_client/attributes_bag.rb

34 lines
781 B
Ruby

# frozen_string_literal: true
module Gitlab
module GitalyClient
# This module expects an `ATTRS` const to be defined on the subclass
# See GitalyClient::WikiPage for an example
module AttributesBag
extend ActiveSupport::Concern
included do
attr_accessor(*const_get(:ATTRS, false))
end
def initialize(params)
params = params.with_indifferent_access
attributes.each do |attr|
instance_variable_set("@#{attr}", params[attr])
end
end
def ==(other)
attributes.all? do |field|
instance_variable_get("@#{field}") == other.instance_variable_get("@#{field}")
end
end
def attributes
self.class.const_get(:ATTRS, false)
end
end
end
end