Skip to content

Instantly share code, notes, and snippets.

@krainboltgreene
Forked from mattrw89/api_controller.rb
Created June 23, 2011 15:26
Show Gist options
  • Save krainboltgreene/1042755 to your computer and use it in GitHub Desktop.
Save krainboltgreene/1042755 to your computer and use it in GitHub Desktop.
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
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 `&lt;class:ContactsController&gt;'
app/controllers/api/contacts_controller.rb:1:in `&lt;top (required)&gt;'
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 `&lt;top (required)&gt;'
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 &lt;module:Runner&gt;'
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'
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
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
/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 &lt;module:Runner&gt;'
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