require 'active_model' require 'active_support/core_ext/class' $:.unshift(File.dirname(__FILE__)) unless $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__))) require "acts_as_api/collection" require "acts_as_api/rails_renderer" require "acts_as_api/exceptions" # acts_as_api is a gem that aims to make the construction of JSON and XML # responses in Rails 3, 4 and 5 easy and fun. # # Therefore it attaches a couple of helper methods to active record and # the action controller base classes. # # acts_as_api uses the default serializers of your rails app and doesn't # force you into more dependencies. module ActsAsApi autoload :Config, "acts_as_api/config" autoload :ApiTemplate, "acts_as_api/api_template" autoload :Base, "acts_as_api/base" autoload :Rendering, "acts_as_api/rendering" autoload :Responder, "acts_as_api/responder" autoload :Adapters, "acts_as_api/adapters" end # Neccessary to render an Array of models, e.g. the result of a search. Array.include(ActsAsApi::Collection) # Attach ourselves to ActiveRecord if defined?(ActiveRecord::Base) ActiveRecord::Base.extend ActsAsApi::Base # Rails 5 compatibility if defined?(ActiveRecord::Relation) ActiveRecord::Relation.include(ActsAsApi::Collection) end if defined?(ActiveRecord::Associations::CollectionProxy) ActiveRecord::Associations::CollectionProxy.include(ActsAsApi::Collection) end if defined?(ActiveRecord::AssociationRelation) ActiveRecord::AssociationRelation.include(ActsAsApi::Collection) end end # Attach ourselves to ActiveResource if defined?(ActiveResource::Base) ActiveResource::Base.extend ActsAsApi::Base end # Attach ourselves to Mongoid if defined?(Mongoid::Document) Mongoid::Document.send :include, ActsAsApi::Adapters::Mongoid end # Attach ourselves to the action controller of Rails if defined?(ActionController::Base) ActionController::Base.send :include, ActsAsApi::Rendering ActsAsApi::RailsRenderer.setup end