Module: FlyIO::Resources

Defined in:
lib/fly_io/resources.rb,
lib/fly_io/resources/base.rb

Defined Under Namespace

Classes: Apps, Base

Class Method Summary collapse

Class Method Details

.class_for(resource_name) ⇒ Object



35
36
37
38
# File 'lib/fly_io/resources.rb', line 35

def class_for(resource_name)
  install!
  const_get(resource_name.split("_").map(&:capitalize).join, false)
end

.install!Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/fly_io/resources.rb', line 17

def install!
  OperationRegistry.resources.each do |resource_name, operations|
    constant_name = resource_name.split("_").map(&:capitalize).join
    klass = if const_defined?(constant_name, false)
              const_get(constant_name, false)
            else
              const_set(constant_name, Class.new(Base))
            end
    operations.each do |operation|
      next if klass.public_method_defined?(operation.ruby_method.to_sym, false)

      klass.define_method(operation.ruby_method) do |**arguments|
        invoke(operation, arguments)
      end
    end
  end
end