From 5d0b74cb07b942af793209274002136ad941a5ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sen=C3=A9n=20Rodero=20Rodr=C3=ADguez?= Date: Tue, 8 Jan 2019 15:15:36 +0100 Subject: [PATCH] Initialize graphql after application initialization Proposal, Debate and Comment "globalize_accessors" class method were loaded before application available locales initialization because of graphql initializer. This will cause unexpected translation errors at any translatable classes declared at graphql api definition (api.yml). Doing GraphQL initialization after application initialization should solve this issue. --- config/application.rb | 5 ++++- config/initializers/graphql_api.rb | 11 +++++++++++ spec/lib/graphql_spec.rb | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 config/initializers/graphql_api.rb diff --git a/config/application.rb b/config/application.rb index ee6d15717..dcd309a5c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -57,7 +57,10 @@ module Consul config.i18n.load_path += Dir[Rails.root.join("config", "locales", "**", "*.{rb,yml}")] config.i18n.load_path += Dir[Rails.root.join("config", "locales", "custom", "**", "*.{rb,yml}")] - config.after_initialize { Globalize.set_fallbacks_to_all_available_locales } + config.after_initialize do + Globalize.set_fallbacks_to_all_available_locales + GraphQLApi::Loader.setup + end config.assets.paths << Rails.root.join("app", "assets", "fonts") config.assets.paths << Rails.root.join("vendor", "assets", "fonts") diff --git a/config/initializers/graphql_api.rb b/config/initializers/graphql_api.rb new file mode 100644 index 000000000..c68334244 --- /dev/null +++ b/config/initializers/graphql_api.rb @@ -0,0 +1,11 @@ +module GraphQLApi + class Loader + def self.setup + if ActiveRecord::Base.connection.tables.any? + api_config = YAML.load_file("./config/api.yml") + GraphqlController.const_set "API_TYPE_DEFINITIONS", + GraphQL::ApiTypesCreator::parse_api_config_file(api_config) + end + end + end +end diff --git a/spec/lib/graphql_spec.rb b/spec/lib/graphql_spec.rb index 6493519ef..aad7624f4 100644 --- a/spec/lib/graphql_spec.rb +++ b/spec/lib/graphql_spec.rb @@ -1,6 +1,6 @@ require "rails_helper" -api_types = GraphQL::ApiTypesCreator.create(API_TYPE_DEFINITIONS) +api_types = GraphQL::ApiTypesCreator.create(GraphqlController::API_TYPE_DEFINITIONS) query_type = GraphQL::QueryTypeCreator.create(api_types) ConsulSchema = GraphQL::Schema.define do query query_type