Sha256: cae0bbd1f54493420fd7eebee03de3e050454c32ef5a79d018fa845a8b971c5f
Contents?: true
Size: 1.45 KB
Versions: 11
Compression:
Stored size: 1.45 KB
Contents
module RailsConnector class CmsEnv OBJ_ENV_KEY = "INFOPARK_OBJ".freeze def initialize(env) @env = env end def load return if env[OBJ_ENV_KEY] load_object end protected attr_reader :env def load_object env[OBJ_ENV_KEY] = begin find_obj rescue StandardError => e e end end def find_obj found_obj = if params[:id] Obj.find(params[:id]) elsif params[:permalink].present? self.class.find_permalink_by_param(params[:permalink]) else if callback = RailsConnector::Configuration.choose_homepage_callback callback_result = callback.call(env) if callback_result.is_a?(Obj) callback_result else raise "choose_homepage callback did not return an Obj. "\ "Instead saw #{callback_result.class}." end else Obj.homepage end end if found_obj.suppressed? raise RailsConnector::ResourceNotFound, "Tried to access Obj #{found_obj.inspect}, but it is suppressed (suppress_export is set)!" end found_obj end def params env["action_dispatch.request.path_parameters"] end def self.find_permalink_by_param(permalink_param) permalink = Array(permalink_param).join("/") Obj.find_by_permalink!(permalink) end end end
Version data entries
11 entries across 11 versions & 1 rubygems