class Gearhead::GearsController
Public Instance Methods
collection_action()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 52 def collection_action action = @gear._gear_collection_actions[params[:collection_action]] if action&.verbs&.include?(request.request_method.to_sym.downcase) render json: instance_exec(&action.block) end end
create()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 14 def create @resource = Gearhead::Actions::Create.build(@gear, request) if @resource.save render json: @gear.serializer_class.new(@resource) else render json: { errors: @resource.errors }, status: :unprocessable_entity end end
destroy()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 37 def destroy if @resource.destroy render json: @gear.serializer_class.new(resource) else render json: { errors: @resource.errors }, status: :unprocessable_entity end end
index()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 10 def index render json: Gearhead::Actions::Index.build(@gear, request) end
member_action()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 45 def member_action action = @gear._gear_member_actions[params[:member_action].to_sym] if action&.verbs&.include?(request.request_method.to_sym.downcase) render json: instance_exec(&action.block) end end
show()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 23 def show @resource = Gearhead::Actions::Show.build(@gear, request, resource: @resource) render json: @gear.serializer_class.new(@resource) end
update()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 28 def update @resource = Gearhead::Actions::Update.build(@gear, request, resource: @resource) if @resource.save render json: @gear.serializer_class.new(@resource) else render json: { errors: @resource.errors }, status: :unprocessable_entity end end
Private Instance Methods
check_collection_actions!()
click to toggle source
remember that request method is from rack so GET/POST/etc.
# File lib/gearhead/gears_controller.rb, line 70 def check_collection_actions! action = @gear._gear_collection_actions[request.request_method][params[:resource_id].to_sym] return render json: instance_exec(&action) if action end
ensure_action_enabled!()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 82 def ensure_action_enabled! unless @gear.action_enabled?(action_name.to_sym) error!("Action not allowed for #{@gear.resource.name}##{action_name}", :method_not_allowed) end end
error!(msg, code = 400)
click to toggle source
# File lib/gearhead/gears_controller.rb, line 88 def error!(msg, code = 400) render json: Serializers::Lookup.for(:invalid_request).new(request, msg, code) end
find_gear!()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 61 def find_gear! @gear = Gearhead.gear_for(request) return @gear if @gear error!("Can't find or infer gear.", 404) if @gear.nil? error!('Gear already mounted somewhere else.', 500) if @gear == false end
find_resource!()
click to toggle source
# File lib/gearhead/gears_controller.rb, line 75 def find_resource! @resource = ::Gearhead::ResourceFinder.for(@gear, params) if @resource.nil? error!("#{@gear.resource.name} not found for #{@gear._gear_param_key} #{params[:resource_id]}") end end