-
-
Save krainboltgreene/1042755 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module ApiHelper | |
require 'apic.rb' | |
require 'api_errors.rb' | |
include ApiErrors | |
######################################### | |
#######Validation Methods################ | |
######################################### | |
def valid_request_before | |
@valid_fields = valid_request?(request) | |
end | |
def valid_request?(request, in_action = nil, prms = nil, accesstoken = nil) | |
#retrieve the API action requested so we can match the right allowed fields | |
raise ApiErrors::InvalidRequest if request.try(:path_parameters).nil? && in_action.nil? | |
#Next block of code primarily to enable testing | |
if request.nil? | |
request = Hashie::Mash.new() | |
request[:path_parameters] = {:action => nil} | |
end | |
action = in_action.nil? ? request.path_parameters[:controller].split("/")[1] : in_action | |
param = prms.nil? ? params : prms | |
#Handle versioning of API in Apic class | |
version = param.try(:version).nil? && ((param.try(:version).nil? ? 0 : param[:version]) <= Apic::STD_VERSION) ? Apic::STD_VERSION : param[:version] | |
version = ["v", version].join | |
#Let's check to see if the fields query parameter is set first | |
if !param[:fields].nil? | |
fields = param[:fields].split(',') | |
raise ApiErrors::InvalidFieldError if fields.empty? | |
#Let's validate the fields that they entered into the query params | |
valid_fields = valid_fields?(fields, action, version) | |
raise ApiErrors::InvalidFieldError unless valid_fields.length == fields.length | |
else | |
#if no fields supplied, send all | |
valid_fields = Apic::API_ALLOWABLE_FIELDS[version.to_sym][action.to_sym] | |
end | |
valid_fields | |
end | |
def valid_fields?(fields,action,version) | |
#return fields that are valid | |
valid_fields = [] | |
if !Apic::API_ALLOWABLE_FIELDS[version.to_sym][action.to_sym].nil? | |
validator = Apic::API_ALLOWABLE_FIELDS[version.to_sym][action.to_sym] | |
valid_fields=[] | |
fields.each do |field| | |
valid_fields.push(field) if validator.include?(field) #push all of the fields that match onto valid_fields array | |
end | |
end | |
valid_fields | |
end | |
def organization_allowed? | |
@valid_orgs = get_me.organizations.collect { |x| x.subtree.collect(&:id)}.flatten.uniq | |
@valid_keywords = SmsKeyword.where(:organization_id => @valid_orgs) | |
if (params[:org].present? || params[:org_id].present?) | |
raise ApiErrors::OrganizationNotIntegerError unless (is_int?(params[:org_id]) || is_int?(params[:org])) | |
org_id = params[:org].present? ? params[:org].to_i : params[:org_id].to_i | |
raise ApiErrors::OrgNotAllowedError unless @valid_orgs.include?(org_id) | |
elsif params[:keyword].present? | |
@valid_key_ids = @valid_keywords.collect(&:id) | |
raise ApiErrors::OrgNotAllowedError unless @valid_key_ids.include?(params[:keyword]) | |
elsif params[:keyword_id].present? | |
raise ApiErrors::KeywordNotIntegerError unless is_int?(params[:keyword_id]) | |
@valid_key_names = @valid_keywords.collect(&:keyword) | |
raise ApiErrors::OrgNotAllowedError unless @valid_key_names.include?(params[:keyword]) | |
end | |
true | |
end | |
def authorized_leader? | |
temp = get_me.organization_memberships.where(:role => ['leader','admin']).where(:organization_id => get_organization.id).collect(&:organization_id) | |
raise ApiErrors::IncorrectPermissionsError if temp.empty? | |
end | |
######################################### | |
#######Resource Getters################## | |
######################################### | |
def get_people | |
person_ids = params[:id].split(',') | |
person_ids.each_with_index do |x,i| | |
person_ids[i] = User.find(oauth.identity).person.id.to_s if x == "me" | |
end | |
people = Person.where(:personID => person_ids) | |
raise ApiErrors::NoDataReturned if people.empty? | |
people | |
end | |
def get_me | |
User.find(Rack::OAuth2::Server.get_access_token(params['access_token']).identity).person if params['access_token'] | |
end | |
def get_keywords | |
if params[:keyword].present? | |
@keywords = SmsKeyword.find_all_by_keyword(params[:keyword]) | |
elsif (params[:org].present? || params[:org_id].present?) | |
org_id = params[:org].present? ? params[:org].to_i : params[:org_id].to_i | |
@keywords = SmsKeyword.find_all_by_organization_id(org_id) | |
elsif params[:keyword_id].present? | |
@keywords = SmsKeyword.find_all_by_id(params[:id]) | |
else @keywords = SmsKeyword.find_all_by_organization_id(get_me.primary_organization.id) | |
end | |
end | |
def get_organization | |
if params[:org_id].present? || params[:org].present? | |
raise OrganizationNotIntegerError unless (is_int?(params[:org_id]) || is_int?(params[:org])) | |
org_id_param = params[:org_id] ? params[:org_id].to_i : params[:org].to_i | |
@organization = Organization.find(org_id_param) | |
else | |
@organization = get_me.primary_organization | |
end | |
raise NoOrganizationError if @organization.nil? | |
@organization | |
end | |
#Pass in a Person Activerecord Query object, return ActiveRecord Query object | |
def paginate_filter_sort_people(people, org) | |
#settings for below | |
allowed_sorting_fields = ["time","status"] | |
allowed_sorting_directions = ["asc", "desc"] | |
allowed_filter_fields = ["gender", "status"] | |
allowed_status = ["uncontacted", "contacted", "attempted_contact", "do_not_contact", "completed", "finished"] | |
#allow for start (SQL Offset) and limit on query. use :start and :limit | |
raise LimitRequiredWithStartError if (params[:start] && !params[:limit]) | |
people = people.offset(params[:start].to_i.abs) if params[:start].present? && params[:limit].to_i.abs !=0 | |
people = people.limit(params[:limit].to_i.abs) if params[:limit].present? && params[:limit].to_i.abs != 0 | |
#allow for sort CSV array w/ directions CSV array. Uses :sort and :direction | |
if params[:sort].present? | |
@sorting_directions = [] | |
@sorting_directions = params[:direction].split(',').select { |d| allowed_sorting_directions.include?(d) } if params[:direction].present? | |
@sorting_fields = params[:sort].split(',').select { |s| allowed_sorting_fields.include?(s) } | |
@sorting_fields.each_with_index do |field,index| | |
case field | |
when "time" | |
people = people.order("#{AnswerSheet.table_name}.`created_at` #{@sorting_directions[index]}") unless @sorting_directions[index].nil? | |
when "status" | |
status = ["uncontacted", "contacted", "attempted_contact","do_not_contact","completed"].include?(@sorting_fields[index].downcase) ? @sorting_fields[index].downcase : nil | |
people = people.joins(:organization_memberships).where("`organization_memberships`.`person_id` = `ministry_person`.`personID` AND `organization_memberships`.`organization_id` = ?", org.id).order("`organization_memberships`.`followup_status` #{@sorting_directions[index]}") | |
end | |
end | |
end | |
#if there were no sorting fields then sort by most recent answer_sheet | |
people = people.order("#{AnswerSheet.table_name}.`created_at` DESC") unless @sorting_fields.nil? | |
#allow for filtering by allowed_filter_fields. filters and values both CSV arrays Uses :filters and :values | |
if params[:filters].present? && params[:values].present? | |
@filter_fields = params[:filters].split(',').select { |f| allowed_filter_fields.include?(f)} | |
@filter_values = params[:values].split(',') | |
@filter_fields.each_with_index do |field,index| | |
case field | |
when "gender" | |
gender = @filter_values[index].downcase == 'male' ? '1' : '0' if ['male','female'].include?(@filter_values[index].downcase) | |
people = people.where("`ministry_person`.`gender` = ?", gender) | |
when "status" | |
status = allowed_status.include?(@filter_values[index].downcase) ? @filter_values[index].downcase : nil | |
status = ["do_not_contact","completed"] if status == "finished" | |
people = people.joins(:organization_memberships).where('organization_memberships.followup_status' => status).where("`organization_memberships`.`person_id` = `ministry_person`.`personID` AND `organization_memberships`.`organization_id` = ?", org.id) | |
end | |
end | |
end | |
people | |
end | |
def is_int?(str) | |
return !!(str =~ /^[-+]?[1-9]([0-9]*)?$/) | |
end | |
#Handle all API controller exceptions and output as JSON | |
def render_json_error(exception = nil) | |
logger.info "#{exception.message}" if exception | |
render :json => exception.message and return false | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:490:in `load_missing_constant' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:181:in `block in const_missing' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `each' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `const_missing' | |
rake (0.8.7) lib/rake.rb:2503:in `const_missing' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:501:in `load_missing_constant' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:181:in `block in const_missing' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `each' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `const_missing' | |
rake (0.8.7) lib/rake.rb:2503:in `const_missing' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:501:in `load_missing_constant' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:181:in `block in const_missing' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `each' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `const_missing' | |
rake (0.8.7) lib/rake.rb:2503:in `const_missing' | |
app/controllers/api/contacts_controller.rb:3:in `<class:ContactsController>' | |
app/controllers/api/contacts_controller.rb:1:in `<top (required)>' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:233:in `load' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:233:in `block in load' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:225:in `load_dependency' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:233:in `load' | |
app/controllers/api_controller.rb:16:in `inherited' | |
app/controllers/api/contacts_controller.rb:1:in `<top (required)>' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:237:in `require' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:237:in `block in require' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:225:in `load_dependency' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:237:in `require' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:344:in `require_or_load' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:489:in `load_missing_constant' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:181:in `block in const_missing' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `each' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:179:in `const_missing' | |
rake (0.8.7) lib/rake.rb:2503:in `const_missing' | |
activesupport (3.1.0.rc3) lib/active_support/inflector/methods.rb:124:in `block in constantize' | |
activesupport (3.1.0.rc3) lib/active_support/inflector/methods.rb:123:in `each' | |
activesupport (3.1.0.rc3) lib/active_support/inflector/methods.rb:123:in `constantize' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:527:in `block in initialize' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:549:in `yield' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:549:in `default' | |
activesupport (3.1.0.rc3) lib/active_support/dependencies.rb:549:in `[]' | |
actionpack (3.1.0.rc3) lib/action_dispatch/routing/route_set.rb:61:in `controller_reference' | |
actionpack (3.1.0.rc3) lib/action_dispatch/routing/route_set.rb:46:in `controller' | |
actionpack (3.1.0.rc3) lib/action_dispatch/routing/route_set.rb:25:in `call' | |
rack-mount (0.8.1) lib/rack/mount/route_set.rb:152:in `block in call' | |
rack-mount (0.8.1) lib/rack/mount/code_generation.rb:93:in `block in recognize' | |
rack-mount (0.8.1) lib/rack/mount/code_generation.rb:166:in `optimized_each' | |
rack-mount (0.8.1) lib/rack/mount/code_generation.rb:92:in `recognize' | |
rack-mount (0.8.1) lib/rack/mount/route_set.rb:141:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/routing/route_set.rb:531:in `call' | |
oa-core (0.2.6) lib/omniauth/strategy.rb:44:in `call!' | |
oa-core (0.2.6) lib/omniauth/strategy.rb:30:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rack-oauth2-server-945bebdc1881/lib/rack/oauth2/server.rb:219:in `call' | |
hoptoad_notifier (2.4.11) lib/hoptoad_notifier/rack.rb:27:in `call' | |
client_side_validations (3.1.0) lib/client_side_validations/middleware.rb:18:in `call' | |
warden (1.0.4) lib/warden/manager.rb:35:in `block in call' | |
warden (1.0.4) lib/warden/manager.rb:34:in `catch' | |
warden (1.0.4) lib/warden/manager.rb:34:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' | |
rack (1.3.0) lib/rack/etag.rb:23:in `call' | |
rack (1.3.0) lib/rack/conditionalget.rb:25:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/head.rb:14:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/params_parser.rb:21:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/flash.rb:243:in `call' | |
rack (1.3.0) lib/rack/session/abstract/id.rb:195:in `context' | |
rack (1.3.0) lib/rack/session/abstract/id.rb:190:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/cookies.rb:321:in `call' | |
activerecord (3.1.0.rc3) lib/active_record/query_cache.rb:54:in `call' | |
activerecord (3.1.0.rc3) lib/active_record/connection_adapters/abstract/connection_pool.rb:448:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' | |
activesupport (3.1.0.rc3) lib/active_support/callbacks.rb:392:in `_run_call_callbacks' | |
activesupport (3.1.0.rc3) lib/active_support/callbacks.rb:81:in `run_callbacks' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/callbacks.rb:28:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/reloader.rb:68:in `call' | |
rack (1.3.0) lib/rack/sendfile.rb:102:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/remote_ip.rb:48:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call' | |
railties (3.1.0.rc3) lib/rails/rack/logger.rb:13:in `call' | |
rack (1.3.0) lib/rack/methodoverride.rb:24:in `call' | |
rack (1.3.0) lib/rack/runtime.rb:17:in `call' | |
activesupport (3.1.0.rc3) lib/active_support/cache/strategy/local_cache.rb:72:in `call' | |
rack (1.3.0) lib/rack/lock.rb:34:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/static.rb:53:in `call' | |
actionpack (3.1.0.rc3) lib/action_dispatch/middleware/static.rb:53:in `call' | |
hoptoad_notifier (2.4.11) lib/hoptoad_notifier/user_informer.rb:12:in `call' | |
railties (3.1.0.rc3) lib/rails/engine.rb:438:in `call' | |
rack-test (0.6.0) lib/rack/mock_session.rb:30:in `request' | |
rack-test (0.6.0) lib/rack/test.rb:218:in `process_request' | |
rack-test (0.6.0) lib/rack/test.rb:114:in `request' | |
actionpack (3.1.0.rc3) lib/action_dispatch/testing/integration.rb:292:in `process' | |
actionpack (3.1.0.rc3) lib/action_dispatch/testing/integration.rb:33:in `get' | |
actionpack (3.1.0.rc3) lib/action_dispatch/testing/integration.rb:325:in `block (2 levels) in <module:Runner>' | |
test/performance/browsing_test.rb:32:in `test_request_contact_information_associated_with_a_person' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance.rb:65:in `block in run_test' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance/ruby.rb:83:in `profile' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance.rb:65:in `run_test' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance.rb:146:in `run_test' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance/ruby.rb:37:in `block in run' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance/ruby.rb:37:in `times' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance/ruby.rb:37:in `run' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance.rb:140:in `run_profile' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance.rb:52:in `block in run' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance.rb:50:in `each' | |
activesupport (3.1.0.rc3) lib/active_support/testing/performance.rb:50:in `run' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:656:in `block (2 levels) in run_test_suites' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:650:in `each' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:650:in `block in run_test_suites' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:649:in `each' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:649:in `run_test_suites' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:609:in `run' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:508:in `block in autorun' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'performance_test_helper' | |
class BrowsingTest < ActionDispatch::PerformanceTest | |
def setup | |
@user = User.find(1170780) | |
@user2 = User.find(193194) | |
@access_token = Rack::OAuth2::Server::AccessToken.where(:identity => @user.id).first | |
end | |
def test_request_contact_information_associated_with_a_person | |
path = "/api/contacts/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
File.open('/users/Doulos/Desktop/testmytest.log', 'a') do |f2| | |
f2.puts "request contact information associated with person\n" | |
f2.puts "#{@response.body}\n\n\n" | |
end | |
end | |
end | |
require 'performance_test_helper' | |
class ApiTest < ActionDispatch::PerformanceTest | |
def setup | |
@user = User.find(1170780) | |
@user2 = User.find(193194) | |
@access_token = Rack::OAuth2::Server::AccessToken.where(:identity => @user.id).first | |
end | |
def test_request_multiple_people | |
path="/api/people/#{@user.person.id},#{@user2.person.id}" | |
get path, {'access_token' => @access_token.code} | |
File.open('/users/Doulos/Desktop/testmytest.log', 'a') do |f2| | |
f2.puts "request multiple people\n" | |
f2.puts "#{@response.body}\n\n\n" | |
end | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Api::ContactsController < ApiController | |
require 'api_helper.rb' | |
include ApiHelper | |
skip_before_filter :authenticate_user! | |
before_filter :valid_request_before, :organization_allowed?, :authorized_leader?, :get_organization | |
oauth_required :scope => "contacts" | |
rescue_from Exception, :with => :render_json_error | |
def search_1 | |
@keywords = get_keywords | |
unless (@keywords.empty? || !params[:term].present?) | |
@question_sheets = @keywords.collect(&:question_sheet) | |
@people = Person.who_answered(@question_sheets).where('`ministry_person`.`firstName` LIKE ? OR `ministry_person`.`lastName` LIKE ? OR `ministry_person`.`preferredName` LIKE ?',"%#{params[:term]}%","%#{params[:term]}%","%#{params[:term]}%") | |
@people = paginate_filter_sort_people(@people,@organization) | |
json_output = @people.collect {|person| { person: person.to_hash_basic(@organization)}} | |
end | |
final_output = Rails.env.production? ? json_output.to_json : JSON::pretty_generate(json_output) | |
render :json => final_output | |
end | |
def index_1 | |
@keywords = get_keywords | |
unless @keywords.empty? | |
@question_sheets = @keywords.collect(&:question_sheet) | |
@people = Person.who_answered(@question_sheets) | |
if params[:assigned_to].present? | |
if params[:assigned_to] == 'none' | |
@people = unassigned_people | |
else | |
@people = @people.joins(:assigned_tos).where('contact_assignments.question_sheet_id' => @question_sheets.collect(&:id), 'contact_assignments.assigned_to_id' => @assigned_to.id) | |
end | |
end | |
@people = paginate_filter_sort_people(@people, @organization) | |
json_output = @people.collect {|person| {person: person.to_hash_basic(@organization)}} | |
end | |
final_output = Rails.env.production? ? json_output.to_json : JSON::pretty_generate(json_output) | |
render :json => final_output | |
end | |
def show_1 | |
@answer_sheets = {} | |
@people = get_people | |
unless @people.empty? | |
@question_sheets = @organization.question_sheets | |
@questions = (@question_sheets.collect { |q| q.questions }).flatten.uniq | |
@people.each do |person| | |
@question_sheets.each do |qs| | |
@answer_sheets[person] = person.answer_sheets.order('created_at DESC').detect {|as| qs.id == as.question_sheet_id} | |
end | |
end | |
@keywords = @question_sheets.collect { |k| k.questionnable}.flatten.uniq | |
@keys = @keywords.collect {|k| {name: k.keyword, keyword_id: k.id, questions: k.questions.collect {|q| q.id}}} | |
json_output = {keywords: @keys, questions: @questions.collect {|q| q.attributes.slice('id', 'kind', 'label', 'style', 'required')}, people: @people.collect {|person| {person: person.to_hash(@organization), form: @questions.collect {|q| {q: q.id, a: q.display_response(@answer_sheets[person])}}}}} | |
end | |
final_output = Rails.env.production? ? json_output.to_json : JSON::pretty_generate(json_output) | |
render :json => final_output | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:490:in `load_missing_constant' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:181:in `block in const_missing' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:179:in `each' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:179:in `const_missing' | |
rake (0.8.7) lib/rake.rb:2503:in `const_missing' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/inflector/methods.rb:124:in `block in constantize' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/inflector/methods.rb:123:in `each' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/inflector/methods.rb:123:in `constantize' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:527:in `block in initialize' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:549:in `yield' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:549:in `default' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/dependencies.rb:549:in `[]' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/routing/route_set.rb:61:in `controller_reference' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/routing/route_set.rb:46:in `controller' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/routing/route_set.rb:25:in `call' | |
rack-mount (0.8.1) lib/rack/mount/route_set.rb:152:in `block in call' | |
rack-mount (0.8.1) lib/rack/mount/code_generation.rb:93:in `block in recognize' | |
rack-mount (0.8.1) lib/rack/mount/code_generation.rb:166:in `optimized_each' | |
rack-mount (0.8.1) lib/rack/mount/code_generation.rb:92:in `recognize' | |
rack-mount (0.8.1) lib/rack/mount/route_set.rb:141:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/routing/route_set.rb:531:in `call' | |
oa-core (0.2.6) lib/omniauth/strategy.rb:44:in `call!' | |
oa-core (0.2.6) lib/omniauth/strategy.rb:30:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rack-oauth2-server-945bebdc1881/lib/rack/oauth2/server.rb:219:in `call' | |
hoptoad_notifier (2.4.11) lib/hoptoad_notifier/rack.rb:27:in `call' | |
client_side_validations (3.1.0) lib/client_side_validations/middleware.rb:18:in `call' | |
warden (1.0.4) lib/warden/manager.rb:35:in `block in call' | |
warden (1.0.4) lib/warden/manager.rb:34:in `catch' | |
warden (1.0.4) lib/warden/manager.rb:34:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' | |
rack (1.3.0) lib/rack/etag.rb:23:in `call' | |
rack (1.3.0) lib/rack/conditionalget.rb:25:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/head.rb:14:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/params_parser.rb:21:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/flash.rb:243:in `call' | |
rack (1.3.0) lib/rack/session/abstract/id.rb:195:in `context' | |
rack (1.3.0) lib/rack/session/abstract/id.rb:190:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/cookies.rb:321:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activerecord/lib/active_record/query_cache.rb:62:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:457:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/callbacks.rb:392:in `_run_call_callbacks' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/callbacks.rb:81:in `run_callbacks' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/callbacks.rb:28:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/reloader.rb:68:in `call' | |
rack (1.3.0) lib/rack/sendfile.rb:102:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/remote_ip.rb:48:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:47:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/railties/lib/rails/rack/logger.rb:13:in `call' | |
rack (1.3.0) lib/rack/methodoverride.rb:24:in `call' | |
rack (1.3.0) lib/rack/runtime.rb:17:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/cache/strategy/local_cache.rb:72:in `call' | |
rack (1.3.0) lib/rack/lock.rb:34:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/static.rb:53:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/middleware/static.rb:53:in `call' | |
hoptoad_notifier (2.4.11) lib/hoptoad_notifier/user_informer.rb:12:in `call' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/railties/lib/rails/engine.rb:451:in `call' | |
rack-test (0.6.0) lib/rack/mock_session.rb:30:in `request' | |
rack-test (0.6.0) lib/rack/test.rb:218:in `process_request' | |
rack-test (0.6.0) lib/rack/test.rb:114:in `request' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/testing/integration.rb:292:in `process' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/testing/integration.rb:33:in `get' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/actionpack/lib/action_dispatch/testing/integration.rb:325:in `block (2 levels) in <module:Runner>' | |
test/performance/browsing_test.rb:13:in `test_request_contact_information_associated_with_a_person' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance.rb:65:in `block in run_test' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance/ruby.rb:83:in `profile' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance.rb:65:in `run_test' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance.rb:146:in `run_test' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance/ruby.rb:37:in `block in run' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance/ruby.rb:37:in `times' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance/ruby.rb:37:in `run' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance.rb:140:in `run_profile' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance.rb:52:in `block in run' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance.rb:50:in `each' | |
/Users/doulos/.rvm/gems/ruby-1.9.2-p180@rails3/bundler/gems/rails-a70f65cbdd43/activesupport/lib/active_support/testing/performance.rb:50:in `run' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:656:in `block (2 levels) in run_test_suites' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:650:in `each' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:650:in `block in run_test_suites' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:649:in `each' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:649:in `run_test_suites' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:609:in `run' | |
/Users/doulos/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/1.9.1/minitest/unit.rb:508:in `block in autorun' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment