Class: GraphQL::RakeTask

Inherits:
Object
  • Object
show all
Extended by:
Rake::DSL
Includes:
Rake::DSL
Defined in:
lib/graphql/rake_task.rb,
lib/graphql/rake_task/validate.rb

Overview

A rake task for dumping a schema as IDL or JSON.

By default, schemas are looked up by name as constants using schema_name:. You can provide a load_schema function to return your schema another way.

load_context:, only: and except: are supported so that you can keep an eye on how filters affect your schema.

Examples:

Dump a Schema to .graphql + .json files

require "graphql/rake_task"
GraphQL::RakeTask.new(schema_name: "MySchema")

# $ rake graphql:schema:dump
# Schema IDL dumped to ./schema.graphql
# Schema JSON dumped to ./schema.json

Invoking the task from Ruby

require "rake"
Rake::Task["graphql:schema:dump"].invoke

Constant Summary collapse

DEFAULT_OPTIONS =
{
  namespace: "graphql",
  dependencies: nil,
  schema_name: nil,
  load_schema: ->(task) { Object.const_get(task.schema_name) },
  load_context: ->(task) { {} },
  only: nil,
  except: nil,
  directory: ".",
  idl_outfile: "schema.graphql",
  json_outfile: "schema.json",
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ RakeTask

Set the parameters of this task by passing keyword arguments or assigning attributes inside the block



78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/graphql/rake_task.rb', line 78

def initialize(options = {})
  all_options = DEFAULT_OPTIONS.merge(options)
  all_options.each do |k, v|
    self.public_send("#{k}=", v)
  end

  if block_given?
    yield(self)
  end

  define_task
end

Instance Attribute Details

#dependenciesArray<String>

Returns:

  • (Array<String>)


49
50
51
# File 'lib/graphql/rake_task.rb', line 49

def dependencies
  @dependencies
end

#directoryString

Returns directory for IDL & JSON files.

Returns:

  • (String)

    directory for IDL & JSON files



74
75
76
# File 'lib/graphql/rake_task.rb', line 74

def directory
  @directory
end

#except<#call(member, ctx)>?

Returns A filter for this task.

Returns:

  • (<#call(member, ctx)>, nil)

    A filter for this task



65
66
67
# File 'lib/graphql/rake_task.rb', line 65

def except
  @except
end

#idl_outfileString

Returns target for IDL task.

Returns:

  • (String)

    target for IDL task



68
69
70
# File 'lib/graphql/rake_task.rb', line 68

def idl_outfile
  @idl_outfile
end

#json_outfileString

Returns target for JSON task.

Returns:

  • (String)

    target for JSON task



71
72
73
# File 'lib/graphql/rake_task.rb', line 71

def json_outfile
  @json_outfile
end

#load_context<#call(task)>

Returns A callable for loading the query context.

Returns:

  • (<#call(task)>)

    A callable for loading the query context



59
60
61
# File 'lib/graphql/rake_task.rb', line 59

def load_context
  @load_context
end

#load_schema<#call(task)>

Returns A proc for loading the target GraphQL schema.

Returns:

  • (<#call(task)>)

    A proc for loading the target GraphQL schema



56
57
58
# File 'lib/graphql/rake_task.rb', line 56

def load_schema
  @load_schema
end

#namespace=(value) ⇒ String (writeonly)

Returns Namespace for generated tasks.

Returns:

  • (String)

    Namespace for generated tasks



42
43
44
# File 'lib/graphql/rake_task.rb', line 42

def namespace=(value)
  @namespace = value
end

#only<#call(member, ctx)>?

Returns A filter for this task.

Returns:

  • (<#call(member, ctx)>, nil)

    A filter for this task



62
63
64
# File 'lib/graphql/rake_task.rb', line 62

def only
  @only
end

#schema_nameString

Returns By default, used to find the schema as a constant.

Returns:

  • (String)

    By default, used to find the schema as a constant.

See Also:

  • for loading a schema another way


53
54
55
# File 'lib/graphql/rake_task.rb', line 53

def schema_name
  @schema_name
end

Instance Method Details

#rake_namespaceObject



44
45
46
# File 'lib/graphql/rake_task.rb', line 44

def rake_namespace
  @namespace
end