Module: Perron::Resource::Sourceable

Extended by:
ActiveSupport::Concern
Included in:
Perron::Resource
Defined in:
lib/perron/resource/sourceable.rb

Instance Method Summary collapse

Instance Method Details

#sourceObject Also known as: sources



96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/perron/resource/sourceable.rb', line 96

def source
  @source ||= begin
    data = self.class.source_definitions.each_with_object({}) do |(name, options), hash|
      primary_key = options[:primary_key]
      singular_name = name.to_s.singularize
      identifier = frontmatter["#{singular_name}_#{primary_key}"]

      dataset = self.class.send(:resolve, name)
      hash[name] = dataset.find { it.public_send(primary_key).to_s == identifier.to_s }
    end

    Source.new(data)
  end
end

#source_backed?Boolean

Returns:

  • (Boolean)


94
# File 'lib/perron/resource/sourceable.rb', line 94

def source_backed? = self.class.source_backed?

#source_template(source) ⇒ Object

Raises:

  • (NotImplementedError)


112
113
114
# File 'lib/perron/resource/sourceable.rb', line 112

def source_template(source)
  raise NotImplementedError, "#{self.class.name} must implement #source_template"
end