Module: ActiveAdmin::GraphQL

Defined in:
lib/active_admin/graphql.rb,
lib/active_admin/graphql.rb,
lib/active_admin/graphql/engine.rb,
lib/active_admin/graphql/railtie.rb,
lib/active_admin/graphql/version.rb,
lib/active_admin/graphql/integration.rb,
lib/active_admin/graphql/auth_context.rb,
lib/active_admin/graphql/schema_field.rb,
lib/active_admin/graphql/record_source.rb,
lib/active_admin/graphql/schema_builder.rb,
lib/active_admin/graphql/schema_builder.rb,
lib/active_admin/graphql/resource_config.rb,
lib/active_admin/graphql/resource_interface.rb,
lib/active_admin/graphql/run_action_payload.rb,
lib/active_admin/graphql/schema_builder/wire.rb,
lib/active_admin/graphql/key_value_pair_input.rb,
lib/active_admin/graphql/resource_query_proxy.rb,
lib/active_admin/graphql/schema_builder/build.rb,
lib/active_admin/graphql/resource_definition_dsl.rb,
lib/active_admin/graphql/run_action_mutation_dsl.rb,
lib/active_admin/graphql/schema_builder/resolvers.rb,
lib/active_admin/graphql/schema_builder/resources.rb,
lib/active_admin/graphql/schema_builder/query_type.rb,
lib/active_admin/graphql/schema_builder/visibility.rb,
lib/active_admin/graphql/run_action_mutation_config.rb,
lib/active_admin/graphql/schema_builder/graph_params.rb,
lib/active_admin/graphql/schema_builder/types_inputs.rb,
lib/active_admin/graphql/schema_builder/types_object.rb,
lib/active_admin/graphql/schema_builder/mutation_batch.rb,
lib/active_admin/graphql/schema_builder/mutation_create.rb,
lib/active_admin/graphql/schema_builder/mutation_member.rb,
lib/active_admin/graphql/resource_query_proxy/controller.rb,
lib/active_admin/graphql/schema_builder/query_type_pages.rb,
lib/active_admin/graphql/schema_builder/query_type_member.rb,
lib/active_admin/graphql/schema_builder/mutation_collection.rb,
lib/active_admin/graphql/schema_builder/query_type_policies.rb,
lib/active_admin/graphql/schema_builder/mutation_action_types.rb,
lib/active_admin/graphql/schema_builder/mutation_type_builder.rb,
lib/active_admin/graphql/schema_builder/query_type_collection.rb,
lib/active_admin/graphql/schema_builder/query_type_registered.rb,
lib/active_admin/graphql/schema_builder/mutation_update_destroy.rb

Overview

GraphQL HTTP API for ActiveAdmin (graphql-ruby), shipped in the activeadmin-graphql gem.

Bundling activeadmin-graphql loads graphql-ruby and registers this integration. Enable the HTTP endpoint per namespace in config/initializers/active_admin.rb:

ActiveAdmin.setup do |config|
  config.namespace :admin do |api|
    api.graphql = true
  end
end

Defined Under Namespace

Modules: Integration, KeyValuePairs, ResourceInterface Classes: AuthContext, Engine, KeyValuePairInput, Railtie, RecordSource, ResourceConfig, ResourceDefinitionDSL, ResourceQueryProxy, RunActionMutationConfig, RunActionMutationDSL, RunActionPayload, SchemaBuilder, SchemaField

Constant Summary collapse

SCHEMA_CACHE =
{}
VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.clear_schema_cache!Object



47
48
49
# File 'lib/active_admin/graphql.rb', line 47

def clear_schema_cache!
  SCHEMA_CACHE.clear
end

.clear_schema_for!(namespace) ⇒ Object



51
52
53
# File 'lib/active_admin/graphql.rb', line 51

def clear_schema_for!(namespace)
  SCHEMA_CACHE.delete(namespace.name)
end

.load!Object

Requires graphql-ruby and schema builders. Safe to call repeatedly; loads once.



26
27
28
29
30
31
32
33
# File 'lib/active_admin/graphql.rb', line 26

def load!
  return if @graphql_features_loaded

  @graphql_features_loaded = true
  ActiveAdmin::Dependency["graphql"].spec!
  require_graphql_dependencies!
  require_active_admin_graphql_components!
end

.require_active_admin_graphql_components!Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/active_admin/graphql.rb', line 62

def require_active_admin_graphql_components!
  %w[
    graphql/resource_interface
    graphql/schema_field
    graphql/auth_context
    graphql/record_source
    graphql/resource_query_proxy
    graphql/run_action_payload
    graphql/run_action_mutation_config
    graphql/run_action_mutation_dsl
    graphql/key_value_pair_input
    graphql/schema_builder
  ].each { |path| require_relative path }
end

.require_graphql_dependencies!Object



55
56
57
58
59
60
# File 'lib/active_admin/graphql.rb', line 55

def require_graphql_dependencies!
  require "graphql"
  require "graphql/types/json"
  require "graphql/types/iso_8601_date_time"
  require "graphql/types/iso_8601_date"
end

.schema_for(namespace) ⇒ Class

Cached per namespace for the process. In development, call clear_schema_cache! or clear_schema_for! after ActiveAdmin unload! (already wired in ActiveAdmin::GraphQL::Integration::ApplicationUnloadClearsGraphQLSchema) or when admin registrations change without a full unload.

Parameters:

  • namespace (ActiveAdmin::Namespace)

Returns:

  • (Class)

    schema class (subclass of GraphQL::Schema)



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

def schema_for(namespace)
  cache_key = namespace.name
  SCHEMA_CACHE[cache_key] ||= SchemaBuilder.new(namespace).build
end