Sha256: 87e65075d5a90c49fd09f1bafe0fb0fb4e48471513bcd41a4beaca9e1893e57e

Contents?: true

Size: 1.36 KB

Versions: 5

Compression:

Stored size: 1.36 KB

Contents

# frozen_string_literal: true

require 'rails/generators/base'

module GraphQL
  module Generators
    class InstallGenerator < Rails::Generators::Base # :nodoc:
      include Rails::GraphQL::BaseGenerator

      desc 'Add an initial setup to your application'

      argument :schema, type: :string, optional: true,
        default: "#{APP_MODULE_NAME}Schema",
        desc: 'A name for the schema'

      class_option :skip_routes, type: :boolean,
        default: false,
        desc: 'Add some initial routes'

      class_option :skip_keeps, type: :boolean,
        default: false,
        desc: 'Skip .keep files'

      def create_config_file
        template 'config.rb', 'config/initializers/graphql.rb'
      end

      def create_schema
        invoke 'graphql:schema'
      end

      def create_keep_files
        return if options[:skip_keeps]

        %w[
          directives fields sources enums inputs interfaces object
          scalars unions queries mutations subscriptions
        ].each { |folder| create_file("#{options[:directory]}/#{folder}/.keep") }
      end

      def add_routes
        return if options[:skip_routes]
        route('get  "/graphql/describe", to: "graphql/base#describe"')
        route('get  "/graphiql",         to: "graphql/base#graphiql"')
        route('post "/graphql",          to: "graphql/base#execute"')
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rails-graphql-1.0.2 lib/generators/graphql/install_generator.rb
rails-graphql-1.0.1 lib/generators/graphql/install_generator.rb
rails-graphql-1.0.0 lib/generators/graphql/install_generator.rb
rails-graphql-1.0.0.rc2 lib/generators/graphql/install_generator.rb
rails-graphql-1.0.0.rc1 lib/generators/graphql/install_generator.rb