Ruby Service Object

# ================================================== # Service Object Rails version (ActiveSupport) # ================================================== require 'virtus' # Service module Service extend ActiveSupport::Concern included do include Virtus.model strict: true def self.call(*args) new(*args).call end end end # ================================================== # Plain Ruby Service Object # ================================================== require 'virtus' # Service Module module Service def self.included(base) base.include Virtus.model strict: true base.extend ClassMethods end # ClassMethods module ClassMethods def call(*args) new(*args).call end end end # ================================================== # Example Service Object # ================================================== class Greeter include Service attribute :message, String def call "Hello, #{@message}!" end end # ================================================== # Example usage # ================================================== Greeter.call message: 'world' # Hello, world!
Very simple way of creating Service Objects for your (Rails) app powered by Virtus

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.