Sha256: f85b383f59c24602ce0f7c0c43b0e8d28c59806f9cc5a61e65def888a9e6e95a

Contents?: true

Size: 754 Bytes

Versions: 2

Compression:

Stored size: 754 Bytes

Contents

# Inherit this class and implement perform method
#
# Documentation:
#   https://github.com/iago-silva/service_it#usage
class Service
  class << self
    # Call your service
    #
    # Example:
    #   ServiceIt.call(arg1: 1, arg2: 2)
    #
    # Arguments:
    #   args: (Hash)
    #
    # Return:
    #   perform's return
    def call(**args)
      new_instance(args).perform
    end

    private

    def new_instance(args)
      instance = new

      args.each do |key, value|
        instance.instance_variable_set("@#{key}", value)
      end

      instance
    end
  end

  # Implement this method to run your service
  def perform
    raise NotImplementedError,
          "Please implement 'perform' method in your #{self.class.name}"
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
service_it-0.1.6 lib/service.rb
service_it-0.1.5 lib/service.rb