Sha256: c180363b14f87f632cf31bbe84db2d4fac0f60010aea43bb8fd5676cd89b2173
Contents?: true
Size: 1.24 KB
Versions: 2
Compression:
Stored size: 1.24 KB
Contents
require "active_support/inflector" require "pp" module Peto module RailsControllerHelper def contract self.class.to_s.sub("Controller", "") end def peto_class "Peto::#{contract.to_s.camelize}".constantize end def parse_caller(at) if /^(.+?):(\d+)(?::in `(.*)')?/ =~ at {:file => $1, :line => $2.to_i, :method => $3.to_sym} end end # respond def procedure_name parse_caller(caller[(0..caller.length).zip(caller).find {|index,at| parse_caller(at)[:method] == :call_subaction }.first - 1])[:method] end def call_procedure_response(response_type, *args) peto_class.send(:"#{procedure_name}_#{response_type}", *args) end def respond(*args) render(:json => call_procedure_response(:response, *args).to_json) end def error(error_name, *messages) call_procedure_response(:"error_#{error_name}", messages.join(",")) end # subaction def index call_subaction(params[:procedure], params[:args]) end def valid_args?(procedure, args) peto_class.send(:"#{procedure}_valid?", args) end def call_subaction(procedure, args) valid_args?(procedure, args) send(procedure, args) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
peto-0.2.3 | lib/peto/rails/rails_controller_helper.rb |
peto-0.2.2 | lib/peto/rails/rails_controller_helper.rb |