Sha256: 5602d7d66a5f2b5a04743c620161014a96df5e7006ee039bd661a1e1e0f4d081

Contents?: true

Size: 1.99 KB

Versions: 13

Compression:

Stored size: 1.99 KB

Contents

# https://robots.thoughtbot.com/mygem-configure-block
module Graphiti
  class Configuration
    # @return [Boolean] Should we raise when the client requests a relationship not defined on the server?
    #   Defaults to true.
    attr_accessor :raise_on_missing_sideload
    # @return [Boolean] Concurrently fetch sideloads?
    #   Defaults to false OR if classes are cached (Rails-only)
    attr_accessor :concurrency

    attr_accessor :respond_to
    attr_accessor :context_for_endpoint
    attr_accessor :links_on_demand
    attr_accessor :pagination_links_on_demand
    attr_accessor :pagination_links
    attr_accessor :typecast_reads

    attr_reader :debug, :debug_models

    attr_writer :schema_path

    # Set defaults
    # @api private
    def initialize
      @raise_on_missing_sideload = true
      @concurrency = false
      @respond_to = [:json, :jsonapi, :xml]
      @links_on_demand = false
      @pagination_links_on_demand = false
      @pagination_links = false
      @typecast_reads = true
      self.debug = ENV.fetch("GRAPHITI_DEBUG", true)
      self.debug_models = ENV.fetch("GRAPHITI_DEBUG_MODELS", false)

      if defined?(::Rails)
        if File.exist?("#{::Rails.root}/.graphiticfg.yml")
          cfg = YAML.load_file("#{::Rails.root}/.graphiticfg.yml")
          @schema_path = "#{::Rails.root}/public#{cfg["namespace"]}/schema.json"
        else
          @schema_path = "#{::Rails.root}/public/schema.json"
        end
        self.debug = ::Rails.logger.level.zero?
        Graphiti.logger = ::Rails.logger
      end
    end

    def schema_path
      @schema_path ||= raise("No schema_path defined! Set Graphiti.config.schema_path to save your schema.")
    end

    def debug=(val)
      @debug = val
      Debugger.enabled = val
    end

    def debug_models=(val)
      @debug_models = val
      Debugger.debug_models = val
    end

    def with_option(key, value)
      original = send(key)
      send(:"#{key}=", value)
      yield
    ensure
      send(:"#{key}=", original)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
graphiti-1.1.1 lib/graphiti/configuration.rb
graphiti-1.1.0 lib/graphiti/configuration.rb
graphiti-1.0.3 lib/graphiti/configuration.rb
graphiti-1.0.2 lib/graphiti/configuration.rb
graphiti-1.0.1 lib/graphiti/configuration.rb
graphiti-1.0.0 lib/graphiti/configuration.rb
graphiti-1.0.rc.28 lib/graphiti/configuration.rb
graphiti-1.0.rc.27 lib/graphiti/configuration.rb
graphiti-1.0.rc.26 lib/graphiti/configuration.rb
graphiti-1.0.rc.25 lib/graphiti/configuration.rb
graphiti-1.0.rc.24 lib/graphiti/configuration.rb
graphiti-1.0.rc.23 lib/graphiti/configuration.rb
graphiti-1.0.rc.22 lib/graphiti/configuration.rb