Module: RelaySchemaHelpers

Defined in:
lib/generators/graphql/templates/graph/relay_schema.rb

Constant Summary collapse

SCHEMA_DIR =
Rails.root.join('app/assets/javascripts/relay/')
SCHEMA_PATH =
File.join(SCHEMA_DIR, 'schema.json')

Instance Method Summary collapse

Instance Method Details

#checksumObject



13
14
15
16
17
# File 'lib/generators/graphql/templates/graph/relay_schema.rb', line 13

def checksum
  files   = Dir["app/graph/**/*.rb"].reject { |f| File.directory?(f) }
  content = files.map { |f| File.read(f) }.join
  Digest::SHA256.hexdigest(content).to_s
end

#explainObject



7
8
9
10
11
# File 'lib/generators/graphql/templates/graph/relay_schema.rb', line 7

def explain
  Rails.cache.fetch checksum do
    RelaySchema.execute GraphQL::Introspection::INTROSPECTION_QUERY
  end
end

#generateObject



19
20
21
22
23
24
25
# File 'lib/generators/graphql/templates/graph/relay_schema.rb', line 19

def generate
  FileUtils.mkdir_p SCHEMA_DIR
  result = JSON.pretty_generate(RelaySchema.explain)
  unless File.exists?(SCHEMA_PATH) && File.read(SCHEMA_PATH) == result
    File.write(SCHEMA_PATH, result)
  end
end

#removeObject



27
28
29
# File 'lib/generators/graphql/templates/graph/relay_schema.rb', line 27

def remove
  FileUtils.rm SCHEMA_PATH if File.exist? SCHEMA_PATH
end