debian-mirror-gitlab/lib/gitlab/gitaly_client/attributes_bag.rb

34 lines
767 B
Ruby
Raw Normal View History

2018-12-23 12:14:25 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
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