class LiveResource::Builder

Attributes

resource[R]

Public Class Methods

new(resource_name, protocol, dependency_types, extensions = nil) click to toggle source
# File lib/live_resource/builder.rb, line 7
def initialize(resource_name, protocol, dependency_types, extensions = nil)
  @dependency_types = dependency_types
  @resource_class   = Class.new(Resource) do # This creates an anonymous subclass of Resource
    include extensions if extensions
  end
  @resource         = @resource_class.new(resource_name, protocol)
end

Public Instance Methods

depends_on(target, *args, &block) click to toggle source
# File lib/live_resource/builder.rb, line 15
    def depends_on(target, *args, &block)
      dependency_type = first_dependency_type_accepting(target)

      unless dependency_type
        raise <<-EOF
No dependency type is registered that accepts #{target.inspect}
Registered dependency types are: #{@dependency_types.inspect}
        EOF
      end

      dependency = dependency_type.new(@resource, target, block, *args)
      @resource.dependencies << dependency
    end
identifier(&block) click to toggle source
# File lib/live_resource/builder.rb, line 29
def identifier(&block)
  @identifier_proc = block

  @resource_class.class_eval do
    define_method(:_identifier, &block)
  end
end

Private Instance Methods

first_dependency_type_accepting(target) click to toggle source
# File lib/live_resource/builder.rb, line 39
def first_dependency_type_accepting(target)
  @dependency_types.each { |type| return type if type.accepts_target? target }
  nil
end