lib/acfs/service.rb in acfs-0.16.0 vs lib/acfs/service.rb in acfs-0.17.0

- old
+ new

@@ -1,24 +1,41 @@ require 'acfs/service/middleware' module Acfs - # Service object. + # User {Acfs::Service} to define your services. That includes + # an identity used to identify the service in configuration files + # and middlewares the service uses. # + # Configure your service URLs in a YAML file loaded in an + # initializer using the identity as a key: + # + # production: + # services: + # user_service_key: "http://users.service.org/base/path" + # + # @example + # class UserService < Acfs::Service + # identity :user_service_key + # + # use Acfs::Middleware::MessagePackDecoder + # end + # class Service attr_accessor :options include Service::Middleware + # @api private + # def initialize(options = {}) @options = options end - def options - @options - end - + # @api private + # @return [String] + # def url_for(resource_class, options = {}) options.reverse_merge! self.options url = self.class.base_url.to_s url += "/#{(options[:path] || resource_class.name.pluralize.underscore).to_s}" @@ -26,14 +43,30 @@ url end class << self + # @api public + # + # @overload identity() + # Return configured identity key or derive key from class name. + # + # @return [Symbol] Service identity key. + # + # @overload identity(identity) + # Set identity key. + # + # @param [#to_s] identity New identity key. + # @return [Symbol] New set identity key. + # def identity(identity = nil) @identity = identity.to_s.to_sym unless identity.nil? @identity ||= name.to_sym end + # @api private + # @return [String] + # def base_url unless (base = Acfs::Configuration.current.locate identity) raise ArgumentError, "#{identity} not configured. Add `locate '#{identity.to_s.underscore}', 'http://service.url/'` to your configuration." end