class JsonApiServer::Configuration

Description

Configurations for the gem.

Example
# config/initializers/json_api_server.rb

# example of custom filter builder
module JsonApiServer
  class MyCustomFilter < FilterBuilder
    def to_query(model)
      model.where("#{column_name} LIKE :val", val: "%#{value}%")
    end
  end
end

JsonApiServer.configure do |c|
  c.base_url = 'http://localhost:3001' # or ENV['HOSTNAME']
  c.filter_builders = c.filter_builders
    .merge({my_custom_builder: JsonApiServer::MyCustomFilter})
  c.logger = Rails.logger
end

Constants

DEFAULT_FILTER_BUILDERS

Default filter builders. For generating queries based on on requested filters.

DEFAULT_SERIALIZER_OPTIONS

Serializer options for the OJ gem.

Attributes

base_url[RW]

Root url i.e., www.example.com. Used in pagination links.

default_builder[RW]

Defaults to sql_eql: JsonApiServer::SqlEql.

default_comparison_builder[RW]

Defaults to sql_comparison: JsonApiServer::SqlComp. For <,>, <=, >=, etc. queries.

default_in_builder[RW]

Defaults to sql_in: JsonApiServer::SqlIn. For IN (x,y,z) queries.

default_like_builder[RW]

Defaults to sql_like: JsonApiServer::SqlLike. If using Postgres, it can be replaced with pg_ilike: JsonApiServer::PgIlike.

default_max_per_page[RW]

Pagination option. Default maximum number of records to show per page. Defaults to 100.

default_per_page[RW]

Pagination option. Default number of records to show per page. Defaults to 20.

filter_builders[RW]
logger[RW]

Defaults to Logger.new(STDOUT)

serializer_options[RW]

JSON is serialized with OJ gem. Options are defined in DEFAULT_SERIALIZER_OPTIONS.

Public Class Methods

new() click to toggle source
# File lib/json_api_server/configuration.rb, line 86
def initialize
  @base_url = nil
  @default_max_per_page = 100
  @default_per_page = 20
  @default_like_builder = :sql_like
  @default_in_builder = :sql_in
  @default_comparison_builder = :sql_comparison
  @default_builder = :sql_eql
  @serializer_options = DEFAULT_SERIALIZER_OPTIONS
  @filter_builders = DEFAULT_FILTER_BUILDERS
  @logger = Logger.new(STDOUT)
end