Commit ea6d5a9c authored by Heinrich Lee Yu's avatar Heinrich Lee Yu

Move GraphQL docs renderer to tooling

This removes the early return that we have on these classes to prevent
eager loading in production.

This also prepares us for the switch to Zeitwerk because it complains
that the file does not define a class in production.
parent 941e229e
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
return if Rails.env.production? return if Rails.env.production?
require 'graphql/rake_task' require 'graphql/rake_task'
require_relative '../../../tooling/graphql/docs/renderer'
namespace :gitlab do namespace :gitlab do
OUTPUT_DIR = Rails.root.join("doc/api/graphql/reference") OUTPUT_DIR = Rails.root.join("doc/api/graphql/reference")
TEMP_SCHEMA_DIR = Rails.root.join('tmp/tests/graphql') TEMP_SCHEMA_DIR = Rails.root.join('tmp/tests/graphql')
TEMPLATES_DIR = 'lib/gitlab/graphql/docs/templates/' TEMPLATES_DIR = 'tooling/graphql/docs/templates/'
# Make all feature flags enabled so that all feature flag # Make all feature flags enabled so that all feature flag
# controlled fields are considered visible and are output. # controlled fields are considered visible and are output.
...@@ -110,7 +111,7 @@ namespace :gitlab do ...@@ -110,7 +111,7 @@ namespace :gitlab do
desc 'GitLab | GraphQL | Generate GraphQL docs' desc 'GitLab | GraphQL | Generate GraphQL docs'
task compile_docs: [:environment, :enable_feature_flags] do task compile_docs: [:environment, :enable_feature_flags] do
renderer = Gitlab::Graphql::Docs::Renderer.new(GitlabSchema, render_options) renderer = Tooling::Graphql::Docs::Renderer.new(GitlabSchema, render_options)
renderer.write renderer.write
...@@ -119,7 +120,7 @@ namespace :gitlab do ...@@ -119,7 +120,7 @@ namespace :gitlab do
desc 'GitLab | GraphQL | Check if GraphQL docs are up to date' desc 'GitLab | GraphQL | Check if GraphQL docs are up to date'
task check_docs: [:environment, :enable_feature_flags] do task check_docs: [:environment, :enable_feature_flags] do
renderer = Gitlab::Graphql::Docs::Renderer.new(GitlabSchema, render_options) renderer = Tooling::Graphql::Docs::Renderer.new(GitlabSchema, render_options)
doc = File.read(Rails.root.join(OUTPUT_DIR, 'index.md')) doc = File.read(Rails.root.join(OUTPUT_DIR, 'index.md'))
......
# frozen_string_literal: true # frozen_string_literal: true
require 'spec_helper' require_relative '../../../../tooling/graphql/docs/renderer'
RSpec.describe Gitlab::Graphql::Docs::Renderer do RSpec.describe Tooling::Graphql::Docs::Renderer do
describe '#contents' do describe '#contents' do
shared_examples 'renders correctly as GraphQL documentation' do shared_examples 'renders correctly as GraphQL documentation' do
it 'contains the expected section' do it 'contains the expected section' do
...@@ -12,7 +12,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do ...@@ -12,7 +12,7 @@ RSpec.describe Gitlab::Graphql::Docs::Renderer do
end end
end end
let(:template) { Rails.root.join('lib/gitlab/graphql/docs/templates/default.md.haml') } let(:template) { Rails.root.join('tooling/graphql/docs/templates/default.md.haml') }
let(:field_description) { 'List of objects.' } let(:field_description) { 'List of objects.' }
let(:type) { ::GraphQL::INT_TYPE } let(:type) { ::GraphQL::INT_TYPE }
......
# frozen_string_literal: true # frozen_string_literal: true
return if Rails.env.production? require 'gitlab/utils/strong_memoize'
module Gitlab module Tooling
module Graphql module Graphql
module Docs module Docs
# We assume a few things about the schema. We use the graphql-ruby gem, which enforces: # We assume a few things about the schema. We use the graphql-ruby gem, which enforces:
......
# frozen_string_literal: true # frozen_string_literal: true
return if Rails.env.production? require_relative 'helper'
module Gitlab module Tooling
module Graphql module Graphql
module Docs module Docs
# Gitlab renderer for graphql-docs. # Gitlab renderer for graphql-docs.
...@@ -14,7 +14,7 @@ module Gitlab ...@@ -14,7 +14,7 @@ module Gitlab
# output_dir: The folder where the markdown files will be saved # output_dir: The folder where the markdown files will be saved
# template: The path of the haml template to be parsed # template: The path of the haml template to be parsed
class Renderer class Renderer
include Gitlab::Graphql::Docs::Helper include Tooling::Graphql::Docs::Helper
attr_reader :schema attr_reader :schema
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment