Module: Graphiti
- Defined in:
- lib/graphiti/debugger.rb,
lib/graphiti.rb,
lib/graphiti/cli.rb,
lib/graphiti/query.rb,
lib/graphiti/rails.rb,
lib/graphiti/scope.rb,
lib/graphiti/types.rb,
lib/graphiti/errors.rb,
lib/graphiti/runner.rb,
lib/graphiti/schema.rb,
lib/graphiti/context.rb,
lib/graphiti/railtie.rb,
lib/graphiti/version.rb,
lib/graphiti/renderer.rb,
lib/graphiti/resource.rb,
lib/graphiti/sideload.rb,
lib/graphiti/stats/dsl.rb,
lib/graphiti/util/hash.rb,
lib/graphiti/util/link.rb,
lib/graphiti/responders.rb,
lib/graphiti/serializer.rb,
lib/graphiti/util/class.rb,
lib/graphiti/schema_diff.rb,
lib/graphiti/resource/dsl.rb,
lib/graphiti/scoping/base.rb,
lib/graphiti/scoping/sort.rb,
lib/graphiti/adapters/null.rb,
lib/graphiti/configuration.rb,
lib/graphiti/hash_renderer.rb,
lib/graphiti/stats/payload.rb,
lib/graphiti/util/sideload.rb,
lib/graphiti/resource/links.rb,
lib/graphiti/resource_proxy.rb,
lib/graphiti/scoping/filter.rb,
lib/graphiti/resource/remote.rb,
lib/graphiti/filter_operators.rb,
lib/graphiti/scoping/paginate.rb,
lib/graphiti/adapters/abstract.rb,
lib/graphiti/request_validator.rb,
lib/graphiti/util/field_params.rb,
lib/graphiti/extensions/temp_id.rb,
lib/graphiti/resource/interface.rb,
lib/graphiti/scoping/filterable.rb,
lib/graphiti/util/remote_params.rb,
lib/graphiti/util/simple_errors.rb,
lib/graphiti/util/include_params.rb,
lib/graphiti/delegates/pagination.rb,
lib/graphiti/resource/persistence.rb,
lib/graphiti/resource/sideloading.rb,
lib/graphiti/util/attribute_check.rb,
lib/graphiti/adapters/graphiti_api.rb,
lib/graphiti/resource/polymorphism.rb,
lib/graphiti/adapters/active_record.rb,
lib/graphiti/resource/configuration.rb,
lib/graphiti/resource/documentation.rb,
lib/graphiti/scoping/default_filter.rb,
lib/graphiti/util/remote_serializer.rb,
lib/graphiti/jsonapi_serializable_ext.rb,
lib/graphiti/scoping/extra_attributes.rb,
lib/graphiti/util/relationship_payload.rb,
lib/graphiti/extensions/extra_attribute.rb,
lib/graphiti/util/serializer_attributes.rb,
lib/graphiti/extensions/boolean_attribute.rb,
lib/graphiti/util/serializer_relationships.rb,
lib/graphiti/util/transaction_hooks_recorder.rb
Overview
For “Rails STI” behavior CreditCard.all # => [<Visa>, <Mastercard>, etc]
Defined Under Namespace
Modules: Adapters, Context, Delegates, Errors, Extensions, JsonapiSerializableExt, Links, Rails, Responders, Scoping, SerializableHash, SerializableTempId, Stats, Util
Classes: CLI, Configuration, Debugger, Deserializer, FilterOperators, HashRenderer, Query, Railtie, Renderer, RequestValidator, Resource, ResourceProxy, Runner, Schema, SchemaDiff, Scope, Serializer, Sideload, Types
Constant Summary
collapse
- DEPRECATOR =
ActiveSupport::Deprecation.new('2.0', 'Graphiti')
- VERSION =
"1.2.1"
Class Method Summary
collapse
Class Method Details
.broadcast(name, payload) ⇒ Object
55
56
57
58
59
60
61
62
|
# File 'lib/graphiti.rb', line 55
def self.broadcast(name, payload)
name = "#{name}.graphiti"
ActiveSupport::Notifications.instrument(name, payload) do
yield payload if block_given?
end
end
|
37
38
39
|
# File 'lib/graphiti.rb', line 37
def self.config
@config ||= Configuration.new
end
|
47
48
49
|
# File 'lib/graphiti.rb', line 47
def self.configure
yield config
end
|
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
19
20
21
|
# File 'lib/graphiti.rb', line 19
def self.context
Thread.current[:context] ||= {}
end
|
.context=(val) ⇒ Object
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
24
25
26
|
# File 'lib/graphiti.rb', line 24
def self.context=(val)
Thread.current[:context] = val
end
|
.log(msg, color = :white, bold = false) ⇒ Object
80
81
82
83
|
# File 'lib/graphiti.rb', line 80
def self.log(msg, color = :white, bold = false)
colored = ActiveSupport::LogSubscriber.new.send(:color, msg, color, bold)
logger.debug(colored)
end
|
64
65
66
|
# File 'lib/graphiti.rb', line 64
def self.logger
@logger ||= stdout_logger
end
|
.logger=(val) ⇒ Object
76
77
78
|
# File 'lib/graphiti.rb', line 76
def self.logger=(val)
@logger = val
end
|
.resources ⇒ Object
51
52
53
|
# File 'lib/graphiti.rb', line 51
def self.resources
@resources ||= []
end
|
When we add a sideload, we need to do configuration, such as adding the relationship to the Resource’s serializer. However, the sideload’s Resource class may not be loaded yet.
This is not a problem when Rails autoloading, but is a problem when eager loading, or not using Rails.
So, load every Resource class then call Graphiti.setup!
93
94
95
96
97
|
# File 'lib/graphiti.rb', line 93
def self.setup!
resources.each do |r|
r.apply_sideloads_to_serializer
end
end
|
.stdout_logger ⇒ Object
68
69
70
71
72
73
74
|
# File 'lib/graphiti.rb', line 68
def self.stdout_logger
logger = Logger.new($stdout)
logger.formatter = proc do |severity, datetime, progname, msg|
"#{msg}\n"
end
logger
end
|
.with_context(obj, namespace = nil) ⇒ Object
This method is part of a private API.
You should avoid using this method if possible, as it may be removed or be changed in the future.
29
30
31
32
33
34
35
|
# File 'lib/graphiti.rb', line 29
def self.with_context(obj, namespace = nil)
prior = context
self.context = {object: obj, namespace: namespace}
yield
ensure
self.context = prior
end
|