class Utter::Generators::Microservice

Usage generator = Utter::Generators::Microservice.new generator.destination_root = path optional, will use current directory by default generator.invoke_all

Public Instance Methods

create_microservice(params={}) click to toggle source
# File lib/generators/service_gem_generator.rb, line 14
      def create_microservice params={}
        path           = params[:path]
        module_name    = params[:module_name]
        api_version    = params[:api_version]
        service_name   = params[:service_name]

        empty_directory "#{path}/microservice"
        empty_directory "#{path}/microservice/lib"
        empty_directory "#{path}/microservice/lib/internals"
        # microservice/lib/main.rb
        create_file    "#{path}/microservice/lib/main.rb"
        @file = <<-FOO
require 'utter'
require 'json'
Dir[File.dirname(__FILE__) + '/**/*.rb'].each {|file| require_relative file }
module #{module_name.capitalize}
  module #{api_version.capitalize}
    class #{service_name.capitalize} < Utter::Microservice 
      \$log.info("mounting \#{self}")
      get '/' do
        domain_stack = Utter::Stack.new do  
          #use MyDomainExtension, "data message"
        end
        \$log.info(domain_stack.to_s)
        {"status": "running"}.to_json
      end 
      #run! if app_file == $0
    end 
  end 
end
        FOO
        append_to_file "#{path}/microservice/lib/main.rb", @file

        # end of microservice/lib/main.rb

        empty_directory "#{path}/microservice/spec"
        create_file    "#{path}/microservice/spec/main_spec.rb"
        create_file    "#{path}/microservice/spec/spec_helper.rb"

        # microservice/README.md
        create_file    "#{path}/microservice/README.md"
        @file = <<-FOO
# describe how to use the microservice here
        FOO

        append_to_file "#{path}/microservice/README.md", @file

        # end of microservice/README.md

      end