discourse/app/controllers/categories_controller.rb
Sam 850b042cab introduce rack:cache as a default, so users don't need to configure apache or nginx
under rack cache we are able to serve 620reqs a second per thin (on my machine) before it 12 (on my machine)

reorganised so mini profilers can be cleanly disabled from config file

added caching for categories index

move production.rb to production.sample.rb
2013-04-11 16:24:21 +10:00

58 lines
1.4 KiB
Ruby

require_dependency 'category_serializer'
class CategoriesController < ApplicationController
before_filter :ensure_logged_in, except: [:index, :show]
def index
list = CategoryList.new(current_user)
discourse_expires_in 1.minute
render_serialized(list, CategoryListSerializer)
end
def show
@category = Category.where(slug: params[:id]).first
render_serialized(@category, CategorySerializer)
end
def create
requires_parameters(*required_param_keys)
guardian.ensure_can_create!(Category)
@category = Category.create(category_params.merge(user: current_user))
return render_json_error(@category) unless @category.save
render_serialized(@category, CategorySerializer)
end
def update
requires_parameters(*required_param_keys)
@category = Category.where(id: params[:id]).first
guardian.ensure_can_edit!(@category)
json_result(@category, serializer: CategorySerializer) { |cat| cat.update_attributes(category_params) }
end
def destroy
category = Category.where(slug: params[:id]).first
guardian.ensure_can_delete!(category)
category.destroy
render nothing: true
end
private
def required_param_keys
[:name, :color, :text_color]
end
def category_param_keys
[required_param_keys, :hotness].flatten!
end
def category_params
params.slice(*category_param_keys)
end
end