Sha256: 5e05597f28b5f5df07df79772f77ca3483c6c95830e497254877b7728c34d065

Contents?: true

Size: 1.76 KB

Versions: 11

Compression:

Stored size: 1.76 KB

Contents

require 'rails/generators/base'

module Webvalve
  module Generators
    class FakeServiceGenerator < Rails::Generators::Base
      desc "Creates a WebValve fake service"

      argument :service_name, required: true

      def create_webvalve_fake_service_file
        require_config!
        create_fake_service_file
        register_fake_in_config
      end

      private

      def create_fake_service_file
        create_file full_file_path, <<-FILE.strip_heredoc
          class #{fake_service_class_name} < WebValve::FakeService
            # # define your routes here
            #
            # get '/widgets' do
            #   json result: 'it works!'
            # end
            #
            # # set the base url for this API via ENV
            #
            # export #{parsed_service_name.upcase}_API_URL='http://whatever.dev'
            #
            # # toggle this service on via ENV
            #
            # export #{parsed_service_name.upcase}_ENABLED=true
          end
        FILE
      end

      def register_fake_in_config
        append_to_file config_file_path do <<~RUBY
          WebValve.register #{fake_service_class_name}
        RUBY
        end
      end

      def require_config!
        raise 'No WebValve configuration file found. Please run `rails generate webvalve:install` first' unless File.exists?(config_file_path)
      end

      def config_file_path
        "config/webvalve.rb"
      end

      def full_file_path
        "webvalve/#{fake_service_filename}.rb"
      end

      def fake_service_class_name
        fake_service_filename.camelize
      end

      def fake_service_filename
        "fake_#{parsed_service_name.underscore}"
      end

      def parsed_service_name
        service_name.sub(/fake/i, '')
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
webvalve-0.9.10 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.9 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.8 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.7 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.6 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.5 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.4 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.3 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.2 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.1 lib/generators/webvalve/fake_service_generator.rb
webvalve-0.9.0 lib/generators/webvalve/fake_service_generator.rb