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>


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

def dependencies
  @dependencies
end

#directoryString


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

def directory
  @directory
end

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


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

def except
  @except
end

#idl_outfileString


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

def idl_outfile
  @idl_outfile
end

#json_outfileString


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

def json_outfile
  @json_outfile
end

#load_context<#call(task)>


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

def load_context
  @load_context
end

#load_schema<#call(task)>


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

def load_schema
  @load_schema
end

#namespace=(value) ⇒ String (writeonly)


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

def namespace=(value)
  @namespace = value
end

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


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.

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