module Pluggaloid::Mirage

Constants

MIRAGE_ID_BASE_NUMBER

Public Class Methods

included(klass) click to toggle source
# File lib/pluggaloid/mirage.rb, line 45
def self.included(klass)
  klass.extend(Extend)
  pluggaloid_mirage_classes[klass.pluggaloid_mirage_namespace] = klass
end
pluggaloid_mirage_classes() click to toggle source
# File lib/pluggaloid/mirage.rb, line 50
def self.pluggaloid_mirage_classes
  @pluggaloid_mirage_classes ||= {}
end
unwrap(namespace:, id:) click to toggle source
# File lib/pluggaloid/mirage.rb, line 32
def self.unwrap(namespace:, id:)
  klass = pluggaloid_mirage_classes[namespace]
  if klass
    result = klass.pluggaloid_mirage_repository[id]
    unless result&.is_a?(Pluggaloid::Mirage) # nilの場合は常にraise
      raise ArgumentError, "The id `#{id}' was not found."
    end
    result
  else
    raise ArgumentError, "The namespace `#{namespace}' was not found."
  end
end

Public Instance Methods

pluggaloid_mirage_id() click to toggle source

このClassのなかで、Pluggaloid::Mirageがインスタンスを同定するためのid(String)を返す。 このメソッドではなく、 `generate_pluggaloid_mirage_id` をoverrideすること

# File lib/pluggaloid/mirage.rb, line 56
def pluggaloid_mirage_id
  generate_pluggaloid_mirage_id.freeze.tap do |id|
    self.class.pluggaloid_mirage_repository[id] = self
    Mirage.pluggaloid_mirage_classes[self.class.pluggaloid_mirage_namespace] ||= self.class
  end
end
pluggaloid_mirage_namespace() click to toggle source
# File lib/pluggaloid/mirage.rb, line 63
def pluggaloid_mirage_namespace
  self.class.pluggaloid_mirage_namespace
end

Private Instance Methods

generate_pluggaloid_mirage_id() click to toggle source

このClassのなかで、Pluggaloid::Mirageがインスタンスを同定するためのid(String)を返す。 Class毎に適したコンテナを返すようにoverrideすること

# File lib/pluggaloid/mirage.rb, line 71
def generate_pluggaloid_mirage_id
  object_id.to_s(MIRAGE_ID_BASE_NUMBER)
end