module CitrusLoader

Author

MinixLi (gmail: MinixLi1986)

Homepage

citrus.inspawn.com

Date

17 July 2014

Author

MinixLi (gmail: MinixLi1986)

Homepage

citrus.inspawn.com

Date

16 July 2014

Constants

VERSION

Attributes

app_handler_loaded[R]
app_remote_loaded[R]
handler_filters_loaded[R]
rpc_filters_loaded[R]

Public Instance Methods

get_service_name(subclass) click to toggle source

Get service name

@param [Class] subclass

# File lib/citrus-loader/loader.rb, line 139
def get_service_name subclass
  service = subclass.name
  service[0] = service[0].downcase
  service
end
load_app_handler(path) click to toggle source

Load app handler

@param [String] path

# File lib/citrus-loader/loader.rb, line 41
def load_app_handler path
  if !File.directory? path
    raise ArgumentError, 'expected a directory'
  end

  result = []
  Dir.glob(File.join(path, '') + '*.rb').each { |filepath|
    if CitrusLoader.app_handler_loaded[filepath]
      result << CitrusLoader.app_handler_loaded[filepath]
    else
      ::Citrus::AppHandler.define_singleton_method(:inherited) { |subclass|
        CitrusLoader.app_handler_loaded[filepath] = subclass
        result << subclass
      }
      require filepath
    end
  }
  result
end
load_app_remote(path) click to toggle source

Load app remote

@param [String] path

# File lib/citrus-loader/loader.rb, line 64
def load_app_remote path
  if !File.directory? path
    raise ArgumentError, 'expected a directory'
  end

  subclasses = []
  Dir.glob(File.join(path, '') + '*.rb').each { |filepath|
    if subclass = CitrusLoader.app_remote_loaded[filepath]
      subclasses << subclass
    else
      ::Citrus::AppRemote.define_singleton_method(:inherited) { |subclass|
        CitrusLoader.app_remote_loaded[filepath] = subclass
        subclasses << subclass
      }
      require filepath
    end
  }

  result = {}
  subclasses.each { |subclass|
    service = get_service_name subclass
    result[service] = subclass
  }
  result
end
load_handler_filters(path) click to toggle source

Load handler filters

@param [String] path

# File lib/citrus-loader/loader.rb, line 93
def load_handler_filters path
  if !File.directory? path
    raise ArgumentError, 'expected a directory'
  end

  result = []
  Dir.glob(File.join(path, '') + '*.rb').each { |filepath|
    if CitrusLoader.handler_filters_loaded[filepath]
      result << CitrusLoader.handler_filters_loaded[filepath]
    else
      ::Citrus::HandlerFilter.define_singleton_method(:inherited) { |subclass|
        CitrusLoader.handler_filters_loaded[filepath] = subclass
        result << subclass
      }
      require filepath
    end
  }
  result
end
load_rpc_filters(path) click to toggle source

Load rpc filters

@param [String] path

# File lib/citrus-loader/loader.rb, line 116
def load_rpc_filters path
  if !File.directory? path
    raise ArgumentError, 'expected a directory'
  end

  result = []
  Dir.glob(File.join(path, '') + '*.rb').each { |filepath|
    if CitrusLoader.rpc_filters_loaded[filepath]
      result << CitrusLoader.rpc_filters_loaded[filepath]
    else
      ::Citrus::RpcFilter.define_singleton_method(:inherited) { |subclass|
        CitrusLoader.rpc_filters_loaded[filepath] = subclass
        result << subclass
      }
      require filepath
    end
  }
  result
end