class JSONAPI::Railtie
def include_jsonapi_concerns(base_controller_class)
def include_jsonapi_concerns(base_controller_class) base_controller_class.include(JSONAPI::ControllerHelpers) base_controller_class.include(JSONAPI::ResourceActions) end
def rebuild_controllers_if_needed(base_controller_class)
def rebuild_controllers_if_needed(base_controller_class) return if JSONAPI::BaseController.superclass == base_controller_class JSONAPI.send(:remove_const, :BaseController) load "json_api/controllers/base_controller.rb" JSONAPI.send(:remove_const, :RelationshipsController) load "json_api/controllers/relationships_controller.rb" JSONAPI.send(:remove_const, :ResourcesController) load "json_api/controllers/resources_controller.rb" end
def resolve_base_controller_class
def resolve_base_controller_class class_name = JSONAPI.configuration.instance_variable_get(:@base_controller_class) class_name.constantize rescue NameError # Controller not yet loaded - this can happen in test environments # where eager_load is false and autoloading hasn't run yet. nil end
def setup_base_controllers
def setup_base_controllers return unless JSONAPI.configuration.base_controller_overridden? base_controller_class = resolve_base_controller_class return unless base_controller_class rebuild_controllers_if_needed(base_controller_class) include_jsonapi_concerns(base_controller_class) end