debian-mirror-gitlab/lib/gitlab/gitaly_client/attributes_bag.rb
2019-01-03 12:48:30 +05:30

31 lines
736 B
Ruby

module Gitlab
module GitalyClient
# This module expects an `ATTRS` const to be defined on the subclass
# See GitalyClient::WikiFile for an example
module AttributesBag
extend ActiveSupport::Concern
included do
attr_accessor(*const_get(:ATTRS))
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)
end
end
end
end