Class: Graphiti::Configuration
Instance Attribute Summary collapse
-
#before_sideload ⇒ Object
Returns the value of attribute before_sideload.
-
#cache_rendering ⇒ Object
writeonly
Sets the attribute cache_rendering.
-
#concurrency ⇒ Boolean
Concurrently fetch sideloads? Defaults to false OR if classes are cached (Rails-only).
-
#concurrency_max_threads ⇒ Integer
This number must be considered in accordance with the database connection pool size configured in ‘database.yml`.
-
#context_for_endpoint ⇒ Object
Returns the value of attribute context_for_endpoint.
-
#debug ⇒ Object
Returns the value of attribute debug.
-
#debug_models ⇒ Object
Returns the value of attribute debug_models.
-
#links_on_demand ⇒ Object
Returns the value of attribute links_on_demand.
-
#pagination_links ⇒ Object
Returns the value of attribute pagination_links.
-
#pagination_links_on_demand ⇒ Object
Returns the value of attribute pagination_links_on_demand.
-
#raise_on_missing_sideload ⇒ Boolean
Should we raise when the client requests a relationship not defined on the server? Defaults to true.
-
#raise_on_missing_sidepost ⇒ Object
Returns the value of attribute raise_on_missing_sidepost.
-
#respond_to ⇒ Object
Returns the value of attribute respond_to.
- #schema_path ⇒ Object
-
#typecast_reads ⇒ Object
Returns the value of attribute typecast_reads.
-
#uri_decoder ⇒ Object
Returns the value of attribute uri_decoder.
Instance Method Summary collapse
- #cache_rendering? ⇒ Boolean
-
#initialize ⇒ Configuration
constructor
private
Set defaults.
- #with_option(key, value) ⇒ Object
Constructor Details
#initialize ⇒ Configuration
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.
Set defaults
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/graphiti/configuration.rb', line 42 def initialize @raise_on_missing_sideload = true @concurrency = false @concurrency_max_threads = 4 @respond_to = [:json, :jsonapi, :xml] @links_on_demand = false @pagination_links_on_demand = false @pagination_links = false @typecast_reads = true @raise_on_missing_sidepost = true @cache_rendering = false self.debug = ENV.fetch("GRAPHITI_DEBUG", true) self.debug_models = ENV.fetch("GRAPHITI_DEBUG_MODELS", false) @uri_decoder = infer_uri_decoder # FIXME: Don't duplicate graphiti-rails efforts if defined?(::Rails.root) && (root = ::Rails.root) config_file = root.join(".graphiticfg.yml") if config_file.exist? cfg = YAML.load_file(config_file) @schema_path = root.join("public#{cfg["namespace"]}/schema.json") else @schema_path = root.join("public/schema.json") end if (logger = ::Rails.logger) self.debug = logger.debug? && debug Graphiti.logger = logger end end end |
Instance Attribute Details
#before_sideload ⇒ Object
Returns the value of attribute before_sideload.
32 33 34 |
# File 'lib/graphiti/configuration.rb', line 32 def before_sideload @before_sideload end |
#cache_rendering=(value) ⇒ Object (writeonly)
Sets the attribute cache_rendering
38 39 40 |
# File 'lib/graphiti/configuration.rb', line 38 def cache_rendering=(value) @cache_rendering = value end |
#concurrency ⇒ Boolean
Returns Concurrently fetch sideloads? Defaults to false OR if classes are cached (Rails-only).
9 10 11 |
# File 'lib/graphiti/configuration.rb', line 9 def concurrency @concurrency end |
#concurrency_max_threads ⇒ Integer
This number must be considered in accordance with the database connection pool size configured in ‘database.yml`. The connection pool should be large enough to accommodate both the foreground threads (ie. web server or job worker threads) and background threads. For each process, Graphiti will create one global executor that uses this many threads to sideload resources asynchronously. Thus, the pool size should be at least `thread_count + concurrency_max_threads + 1`. For example, if your web server has a maximum of 3 threads, and `concurrency_max_threads` is set to 4, then your pool size should be at least 8.
23 24 25 |
# File 'lib/graphiti/configuration.rb', line 23 def concurrency_max_threads @concurrency_max_threads end |
#context_for_endpoint ⇒ Object
Returns the value of attribute context_for_endpoint.
26 27 28 |
# File 'lib/graphiti/configuration.rb', line 26 def context_for_endpoint @context_for_endpoint end |
#debug ⇒ Object
Returns the value of attribute debug.
34 35 36 |
# File 'lib/graphiti/configuration.rb', line 34 def debug @debug end |
#debug_models ⇒ Object
Returns the value of attribute debug_models.
34 35 36 |
# File 'lib/graphiti/configuration.rb', line 34 def debug_models @debug_models end |
#links_on_demand ⇒ Object
Returns the value of attribute links_on_demand.
27 28 29 |
# File 'lib/graphiti/configuration.rb', line 27 def links_on_demand @links_on_demand end |
#pagination_links ⇒ Object
Returns the value of attribute pagination_links.
29 30 31 |
# File 'lib/graphiti/configuration.rb', line 29 def pagination_links @pagination_links end |
#pagination_links_on_demand ⇒ Object
Returns the value of attribute pagination_links_on_demand.
28 29 30 |
# File 'lib/graphiti/configuration.rb', line 28 def pagination_links_on_demand @pagination_links_on_demand end |
#raise_on_missing_sideload ⇒ Boolean
Returns Should we raise when the client requests a relationship not defined on the server? Defaults to true.
6 7 8 |
# File 'lib/graphiti/configuration.rb', line 6 def raise_on_missing_sideload @raise_on_missing_sideload end |
#raise_on_missing_sidepost ⇒ Object
Returns the value of attribute raise_on_missing_sidepost.
31 32 33 |
# File 'lib/graphiti/configuration.rb', line 31 def raise_on_missing_sidepost @raise_on_missing_sidepost end |
#respond_to ⇒ Object
Returns the value of attribute respond_to.
25 26 27 |
# File 'lib/graphiti/configuration.rb', line 25 def respond_to @respond_to end |
#schema_path ⇒ Object
85 86 87 |
# File 'lib/graphiti/configuration.rb', line 85 def schema_path @schema_path ||= raise("No schema_path defined! Set Graphiti.config.schema_path to save your schema.") end |
#typecast_reads ⇒ Object
Returns the value of attribute typecast_reads.
30 31 32 |
# File 'lib/graphiti/configuration.rb', line 30 def typecast_reads @typecast_reads end |
#uri_decoder ⇒ Object
Returns the value of attribute uri_decoder.
35 36 37 |
# File 'lib/graphiti/configuration.rb', line 35 def uri_decoder @uri_decoder end |
Instance Method Details
#cache_rendering? ⇒ Boolean
75 76 77 78 79 80 81 82 83 |
# File 'lib/graphiti/configuration.rb', line 75 def cache_rendering? use_caching = @cache_rendering && Graphiti.cache.respond_to?(:fetch) use_caching.tap do |use| if @cache_rendering && !Graphiti.cache&.respond_to?(:fetch) raise "You must configure a cache store in order to use cache_rendering. Set Graphiti.cache = Rails.cache, for example." end end end |
#with_option(key, value) ⇒ Object
99 100 101 102 103 104 105 |
# File 'lib/graphiti/configuration.rb', line 99 def with_option(key, value) original = send(key) send(:"#{key}=", value) yield ensure send(:"#{key}=", original) end |