class RestPack::Service::Loader

Public Class Methods

load(gem_name, module_name) click to toggle source
# File lib/restpack_service/loader.rb, line 6
def self.load(gem_name, module_name)
  require 'require_all'

  require 'restpack_serializer'
  require 'active_support/core_ext'

  service_path = self.get_service_path(caller, gem_name)

  require "#{service_path}/version"
  require "#{service_path}/configuration"
  require_all "#{service_path}/tasks"

  Modularize.create module_name
  Modularize.create "#{module_name}::Models"
  Modularize.create "#{module_name}::Serializers"
  Modularize.create "#{module_name}::Tasks"
  Modularize.create "#{module_name}::Jobs"
  Modularize.create "#{module_name}::Commands"

  require_service_module 'models', service_path
  require_service_module 'serializers', service_path
  require_service_module 'commands', service_path
  require_service_module 'jobs', service_path
end

Private Class Methods

get_service_path(load_caller, restpack_service_name) click to toggle source
# File lib/restpack_service/loader.rb, line 38
def self.get_service_path(load_caller, restpack_service_name)
  #Gets the path of the calling service : http://stackoverflow.com/questions/14772381/get-directory-of-file-that-instantiated-a-class-ruby
  source_file = nil
  load_caller.each do |s|
    if(s =~ /(require|require_relative)/)
      source_file = File.dirname(File.expand_path(s.split(':')[0]))
      break
    end
  end
  "#{source_file}/#{restpack_service_name}"
end
require_service_module(module_name, service_path) click to toggle source
# File lib/restpack_service/loader.rb, line 33
def self.require_service_module(module_name, service_path)
  path = "#{service_path}/#{module_name.downcase}"
  require_all(path) if File.directory?(path)
end