Created
June 23, 2011 15:19
-
-
Save mattrw89/1042734 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
class ApiController < ApplicationController | |
require 'api_errors' | |
include ApiErrors | |
################################################################################# | |
#####CODE FROM http://www.starkiller.net/2011/03/17/versioned-api-1/ ########### | |
################################################################################# | |
@@versions = {} | |
@@registered_methods = {} | |
class << self | |
alias_method :original_inherited, :inherited | |
def inherited(subclass) | |
original_inherited(subclass) | |
load File.join("#{Rails.root}", "app", "controllers", | |
"api", "#{extract_filename(subclass)}") | |
subclass.action_methods.each do |method| | |
regex = Regexp.new("^(.*)_(\\d+)$") | |
if match = regex.match(method) | |
key = "#{subclass.to_s}##{match[1]}" | |
@@versions[match[2].to_i] = true | |
@@registered_methods[key] ||= {} | |
@@registered_methods[key][match[2].to_i] = true | |
subclass.instance_eval do | |
define_method(match[1].to_sym) {} | |
end | |
end | |
end | |
subclass.reset_action_methods | |
end | |
def extract_filename(subclass) | |
classname = subclass.to_s.split('::')[1] | |
parts = classname.underscore.split('_') | |
"#{parts.reject{|c| c == 'controller'}.join('_')}_controller.rb" | |
end | |
def reset_action_methods | |
@action_methods = nil | |
action_methods | |
end | |
end | |
def versions | |
render :json => @@versions.keys.sort.reverse and return | |
end | |
def no_api_method | |
render :json => {"error" => "The requested method does not exist or is not\ | |
enabled for the requested API version (v#{params[:version]})"}, | |
:status => 404 and return | |
end | |
private | |
def protected_actions | |
['versions','no_api_method'] | |
end | |
alias_method :original_process_action, :process_action | |
def process_action(method_name, *args) | |
method = "no_api_method" | |
if protected_actions.include? method_name | |
method = method_name | |
else | |
if params[:version] | |
params[:version] = params[:version][1,params[:version].length - 1].to_i | |
else | |
params[:version] = @@versions.keys.max | |
end | |
method = find_method(method_name, params[:version]) | |
end | |
original_process_action(method, *args) | |
end | |
def find_method(method_name, version) | |
key = "#{self.class.to_s}##{method_name}" | |
versions = @@registered_methods[key].keys.sort | |
final_method = 'no_api_method' | |
versions.reverse.each do |v| | |
if v <= version | |
final_method = "#{method_name}_#{v}" | |
break | |
end | |
end | |
final_method | |
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
require 'test_helper' | |
class ApiFlowsTest < ActionDispatch::IntegrationTest | |
context "a client" do | |
setup do | |
@user = Factory.create(:user_with_auxs) | |
@user2 = Factory.create(:user2_with_auxs) | |
@user2.person.update_attributes(:firstName => "Test", :lastName => "Useroo") | |
@user2.person.organization_memberships.destroy_all | |
@user2.person.organization_memberships.create(:organization_id => @user.person.primary_organization.id, :person_id => @user2.person.id, :primary => 1, :role => "leader", :followup_status => "contacted") | |
ContactAssignment.create(:assigned_to_id => @user.person.id, :person_id => @user2.person.id, :organization_id => @user.person.organizations.first.id) | |
ContactAssignment.create(:assigned_to_id => @user2.person.id, :person_id => @user.person.id, :organization_id => @user.person.organizations.first.id) | |
@access_token = Factory.create(:access_token, :identity => @user.id) | |
@access_token2 = Factory.create(:access_token, :identity => @user2.id, :code => "aoeuaocnpganoeuhnh234hnaeu") | |
end | |
should "be able to request person information" do | |
path = "/api/people/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_full_test(@json[0], @user, @user2) | |
end | |
should "be able to request person information with fields" do | |
path = "/api/people/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code, 'fields' => "first_name,last_name,name,id,birthday,fb_id,picture,gender,education,interests,id,locale,location,assignment,request_org_id,organization_membership,status"} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_full_test(@json[0], @user, @user2) | |
end | |
should "be able to get person friends" do | |
path = "/api/friends/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_mini_test(@json[0]['person'],@user) | |
assert_equal(@json[0]['friends'].length, 3) | |
friend_test(@json[0]['friends'][0], @user.person.friends.first) | |
end | |
context "with version 1 specified" do | |
should "be able to request person information" do | |
path = "/api/v1/people/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_full_test(@json[0], @user, @user2) | |
end | |
should "be able to request person information with fields" do | |
path = "/api/v1/people/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code, 'fields' => "first_name,last_name,name,id,birthday,fb_id,picture,gender,education,interests,id,locale,location,assignment,request_org_id,organization_membership,status"} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_full_test(@json[0], @user, @user2) | |
end | |
should "be able to get person friends" do | |
path = "/api/v1/friends/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_mini_test(@json[0]['person'],@user) | |
assert_equal(@json[0]['friends'].length, 3) | |
friend_test(@json[0]['friends'][0], @user.person.friends.first) | |
end | |
end | |
end | |
context "a client" do | |
setup do | |
@user = Factory.create(:user_with_auxs) | |
@user2 = Factory.create(:user2_with_auxs) | |
@user2.person.update_attributes(:firstName => "Test", :lastName => "Useroo") | |
@user2.person.organization_memberships.destroy_all | |
@user2.person.organization_memberships.create(:organization_id => @user.person.primary_organization.id, :person_id => @user2.person.id, :primary => 1, :role => "leader", :followup_status => "contacted") | |
ContactAssignment.create(:assigned_to_id => @user.person.id, :person_id => @user2.person.id, :organization_id => @user.person.organizations.first.id) | |
ContactAssignment.create(:assigned_to_id => @user2.person.id, :person_id => @user.person.id, :organization_id => @user.person.organizations.first.id) | |
@access_token = Factory.create(:access_token, :identity => @user.id) | |
@access_token2 = Factory.create(:access_token, :identity => @user2.id, :code => "aoeuaocnpganoeuhnh234hnaeu") | |
@organization = Factory(:organization) | |
@keyword = Factory(:approved_keyword, :organization => @user.person.organizations.first) | |
@firstNameQ = Factory(:element) | |
@keyword.question_page.elements << @firstNameQ | |
@questions = @keyword.question_sheet.questions | |
@answer_sheet = Factory(:answer_sheet, :question_sheet => @keyword.question_sheet, :person => @user.person) | |
@answer_sheet2 = Factory(:answer_sheet, :question_sheet => @keyword.question_sheet, :person => @user2.person) | |
@answer_to_choice = Factory(:answer_1, :answer_sheet => @answer_sheet, :question => @questions.first) | |
@answer_to_choice2 = Factory(:answer_1, :answer_sheet => @answer_sheet2, :question => @questions.first) | |
end | |
should "be able to view their contacts" do | |
path = "/api/contacts/" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_basic_test(@json[0]['person'],@user,@user2) | |
person_basic_test(@json[1]['person'],@user2,@user) | |
end | |
should "be able to view their contacts filtered by gender=male" do | |
path = "/api/contacts.json?filters=gender&values=male" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length,2) | |
@json.each do |person| | |
assert_equal(person['person']['gender'],'male') | |
assert_not_equal(person['person']['gender'],'female') | |
end | |
end | |
should "be able to view their contacts filtered by gender=female" do | |
path = "/api/contacts.json?filters=gender&values=female" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length,0) | |
@user.person.update_attributes(:gender => 'female') | |
@user2.person.update_attributes(:gender => 'female') | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length,2) | |
@json.each do |person| | |
assert_equal(person['person']['gender'],'female') | |
assert_not_equal(person['person']['gender'],'male') | |
end | |
end | |
should "be able to view their contacts with start and limit" do | |
path = "/api/contacts.json?limit=1&start=0" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length, 1) | |
person_basic_test(@json[0]['person'],@user,@user2) | |
path = "/api/contacts.json?limit=1&start=1" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length, 1) | |
person_basic_test(@json[0]['person'],@user2,@user) | |
#raise an error when no limit with start | |
path = "/api/contacts.json?start=1" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json['error']['code'],"29") | |
path = "/api/contacts.json?limit=1" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length, 1) | |
end | |
should "be able to view their contacts filtered by status=contacted" do | |
path = "/api/contacts.json?filters=status&values=contacted" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length,1) | |
person_basic_test(@json[0]['person'],@user2,@user) | |
@user.person.organization_memberships.where(:organization_id => @user.person.primary_organization.id).first.update_attributes(:followup_status => 'attempted_contact') | |
@user2.person.organization_memberships.where(:organization_id => @user.person.primary_organization.id).first.update_attributes(:followup_status => 'attempted_contact') | |
path = "/api/contacts.json?filters=status&values=contacted" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length,0) | |
path = "/api/contacts.json?filters=status&values=attempted_contact" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length,2) | |
path = "/api/contacts.json?filters=status,gender&values=attempted_contact,female" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length,0) | |
end | |
should "be able to view their contacts with sorting" do | |
path = "/api/contacts.json?sort=time&direction=desc" | |
@user2.person.answer_sheets.first.update_attributes(:created_at => 2.days.ago) | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length, 2) | |
person_mini_test(@json[0]['person'],@user) | |
path = "/api/contacts.json?sort=time&direction=asc" | |
@user2.person.answer_sheets.first.update_attributes(:created_at => 2.days.ago) | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json.length, 2) | |
person_mini_test(@json[0]['person'],@user2) | |
end | |
should "be able to view their contacts by searching" do | |
path = "/api/contacts/search?term=Useroo" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
person_basic_test(@json[0]['person'], @user2, @user) | |
end | |
should "be able to view a specific contact" do | |
path = "/api/contacts/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
keyword_test(@json['keywords'], @keyword) | |
question_test(@json['questions'], @questions) | |
person_full_test(@json['people'][0]['person'], @user, @user2) | |
form_test(@json['people'][0]['form'], @questions, @answer_sheet) | |
end | |
should "be able to view a specific contact with a specific version" do | |
path = "/api/v1/contacts/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
assert_response :success, @response.body | |
@json = ActiveSupport::JSON.decode(@response.body) | |
keyword_test(@json['keywords'], @keyword) | |
question_test(@json['questions'], @questions) | |
person_full_test(@json['people'][0]['person'], @user, @user2) | |
form_test(@json['people'][0]['form'], @questions, @answer_sheet) | |
end | |
should "be able to add a comment to a contact" do | |
path = "/api/followup_comments/" | |
assert_equal(FollowupComment.all.count, 0) | |
assert_equal(Rejoicable.all.count, 0) | |
json = ActiveSupport::JSON.encode({:followup_comment => {:organization_id=> @user.person.primary_organization.id, :contact_id=>@user2.person.id, :commenter_id=>@user.person.id, :status=>"do_not_contact", :comment=>"Testing the comment system."}, :rejoicables => ["spiritual_conversation", "prayed_to_receive", "gospel_presentation"]}) | |
post path, {'access_token' => @access_token.code, 'json' => json } | |
File.open('/users/Doulos/Desktop/testmytest.log', 'a') do |f2| | |
f2.puts "TESTING: \n" | |
f2.puts "#{@response.body}\n\n\n" | |
end | |
assert_equal(FollowupComment.all.count, 1) | |
assert_equal(Rejoicable.all.count,3) | |
assert_equal(FollowupComment.all.first.comment, "Testing the comment system.") | |
end | |
should "be able to get the followup comments" do | |
#create a few test comments | |
path = "/api/followup_comments/" | |
json = ActiveSupport::JSON.encode({:followup_comment => {:organization_id=> @user.person.primary_organization.id, :contact_id=>@user2.person.id, :commenter_id=>@user.person.id, :status=>"do_not_contact", :comment=>"Testing the comment system."}, :rejoicables => ["spiritual_conversation", "prayed_to_receive", "gospel_presentation"]}) | |
post path, {'access_token' => @access_token.code, 'json' => json } | |
post path, {'access_token' => @access_token.code, 'json' => json } | |
path = "/api/followup_comments/#{@user2.person.id}" | |
get path, {'access_token' => @access_token.code} | |
@json = ActiveSupport::JSON.decode(@response.body) | |
f1 = FollowupComment.first | |
f2 = FollowupComment.last | |
followup_comment_test(@json[0]['followup_comment'], f1, @user2.person, @user.person) | |
end | |
should "be able to create a contact assignment" do | |
path = "/api/contact_assignments/" | |
ContactAssignment.destroy_all | |
post path, {'access_token' => @access_token.code, :org_id => @user.person.primary_organization.id, :assign_to => @user2.person.id, :ids => @user2.person.id} | |
assert_equal(@user2.person.contact_assignments.count, 1) | |
end | |
should "fail to create a contact assignment" do | |
path = "/api/contact_assignments/" | |
ContactAssignment.destroy_all | |
post path, {'access_token' => @access_token.code, :org_id => @user.person.primary_organization.id, :assign_to => "23423523a", :ids => @user2.person.id} | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json['error']['code'], '27') | |
ContactAssignment.destroy_all | |
post path, {'access_token' => @access_token.code, :org_id => '234abc', :assign_to => "23423523", :ids => @user2.person.id} | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json['error']['code'], '30') | |
end | |
should "be able to delete a contact assignment" do | |
ContactAssignment.destroy_all | |
y = ContactAssignment.create(:organization_id => @user.person.primary_organization.id, :person_id => @user.person.id, :assigned_to_id => @user.person.id) | |
assert_equal(@user.person.contact_assignments.count, 1) | |
path = "/api/contact_assignments/#{@user.person.id}" | |
delete path, {'access_token' => @access_token.code} | |
assert_equal(@user.person.contact_assignments.count, 0) | |
end | |
end | |
context "a user" do | |
setup do | |
@user = Factory.create(:user_with_auxs) | |
@user2 = Factory.create(:user2_with_auxs) | |
@user2.person.update_attributes(:firstName => "Test", :lastName => "Useroo") | |
@user2.person.organization_memberships.destroy_all | |
@user2.person.organization_memberships.create(:organization_id => @user.person.primary_organization.id, :person_id => @user2.person.id, :primary => 1, :role => "leader", :followup_status => "contacted") | |
ContactAssignment.create(:assigned_to_id => @user.person.id, :person_id => @user2.person.id, :organization_id => @user.person.organizations.first.id) | |
ContactAssignment.create(:assigned_to_id => @user2.person.id, :person_id => @user.person.id, :organization_id => @user.person.organizations.first.id) | |
@access_token = Factory.create(:access_token, :identity => @user.id) | |
@access_token2 = Factory.create(:access_token, :identity => @user2.id, :code => "aoeuaocnpganoeuhnh234hnaeu") | |
end | |
should "be denied access to resources when they have the wrong scope" do | |
path = "/api/contact_assignments/#{@user.person.id}" | |
@access_token.update_attributes(:scope => "contacts userinfo followup_comments") | |
delete path, {'access_token' => @access_token.code} | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json['error']['code'],"55") | |
path = "/api/friends/#{@user.person.id}" | |
@access_token.update_attributes(:scope => "contacts contact_assignment followup_comments") | |
get path, {'access_token' => @access_token.code} | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json['error']['code'],"55") | |
path = "/api/people/#{@user.person.id}" | |
get path, {'access_token' => @access_token.code} | |
@json = ActiveSupport::JSON.decode(@response.body) | |
assert_equal(@json['error']['code'],"55") | |
end | |
end | |
###################################### | |
########## HELPER METHODS ############ | |
###################################### | |
def followup_comment_test(json_comment, comment, contact, commenter) | |
assert_equal(json_comment['comment']['id'], comment.id) | |
assert_equal(json_comment['comment']['contact_id'], contact.id) | |
assert_equal(json_comment['comment']['commenter']['id'], commenter.id) | |
assert_equal(json_comment['comment']['commenter']['picture'], commenter.picture) | |
assert_equal(json_comment['comment']['commenter']['name'], commenter.to_s) | |
assert_equal(json_comment['comment']['comment'], comment.comment) | |
assert_equal(json_comment['comment']['status'], comment.status) | |
assert_equal(json_comment['comment']['organization_id'], contact.primary_organization.id) | |
rejoicables_test(json_comment['rejoicables'], comment.rejoicables) | |
end | |
def rejoicables_test(json_rejoicables, rejoicables) | |
json_rejoicables.each_with_index do |r,i| | |
assert_equal(r['id'], rejoicables[i].id) | |
assert_equal(r['what'], rejoicables[i].what) | |
end | |
end | |
def friend_test(json_friend, friend) | |
assert_equal(json_friend['name'],friend.name) | |
assert_equal(json_friend['uid'], friend.uid) | |
assert_equal(json_friend['provider'], friend.provider) | |
end | |
def form_test(json_form, questions, answer_sheet) | |
json_form.each_with_index do |q,i| | |
assert_equal(q['a'],questions[i].display_response(answer_sheet)) | |
end | |
end | |
def keyword_test(json_keywords,keywords) | |
unless keywords.is_a? Array | |
temp = keywords | |
keywords = [temp] | |
end | |
json_keywords.each_with_index do |keyword,i| | |
assert_equal(keyword['name'],'approved') | |
assert_equal(keyword['keyword_id'],keywords[i].id) | |
assert_equal(keyword['questions'], keywords[i].question_sheets.first.questions.collect(&:id)) | |
end | |
end | |
def question_test(json_questions,questions) | |
json_questions.each_with_index do |question,i| | |
assert_equal(question['id'],questions[i].id) | |
assert_equal(question['kind'],questions[i].kind) | |
assert_equal(question['label'],questions[i].label) | |
assert_equal(question['style'],questions[i].style) | |
assert_equal(question['required'],questions[i].required) | |
end | |
end | |
def person_mini_test(json_person,user) | |
assert_equal(json_person['name'], user.person.to_s) | |
assert_equal(json_person['id'], user.person.id) | |
end | |
def person_basic_test(json_person,user,user2) | |
person_mini_test(json_person,user) | |
assert_equal(json_person['picture'], user.person.picture) | |
assert_equal(json_person['fb_id'], user.person.fb_uid.to_s) | |
assert_equal(json_person['gender'], user.person.gender) | |
assert_equal(json_person['status'], user.person.organization_memberships.first.followup_status) | |
person_mini_test(json_person['assignment']['assigned_to_person'][0],user) | |
person_mini_test(json_person['assignment']['person_assigned_to'][0],user2) | |
assert_equal(json_person['request_org_id'], user.person.primary_organization.id) | |
end | |
def person_full_test(json_person,user,user2) | |
person_basic_test(json_person,user,user2) | |
assert_equal(json_person['first_name'], user.person.firstName) | |
assert_equal(json_person['last_name'], user.person.lastName) | |
assert_equal(json_person['locale'], user.locale.nil? ? "" : user.locale) | |
assert_equal(json_person['birthday'], user.person.birth_date.to_s) | |
assert_equal(json_person['education'][0]['school']['name'], "Test High School") | |
assert_equal(json_person['education'][1]['school']['name'], "Test University") | |
assert_equal(json_person['education'][2]['school']['name'], "Test University 2") | |
assert_equal(json_person['interests'][1]['name'], "Test Interest 2") | |
assert_equal(json_person['organization_membership'][0]['org_id'], user.person.primary_organization.id) | |
assert_equal(json_person['organization_membership'][0]['role'], user.person.organization_memberships.first.role) | |
assert_equal(json_person['organization_membership'][0]['primary'].downcase, 'true') | |
end | |
end | |
# File.open('/users/Doulos/Desktop/testmytest.log', 'a') do |f2| | |
# f2.puts "should be able to view a specific contact\n" | |
# f2.puts "#{JSON::pretty_generate(@json)}\n\n\n" | |
# 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
request contact information associated with person | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8" /> | |
<title>Action Controller: Exception caught</title> | |
<style> | |
body { background-color: #fff; color: #333; } | |
body, p, ol, ul, td { | |
font-family: helvetica, verdana, arial, sans-serif; | |
font-size: 13px; | |
line-height: 18px; | |
} | |
pre { | |
background-color: #eee; | |
padding: 10px; | |
font-size: 11px; | |
} | |
a { color: #000; } | |
a:visited { color: #666; } | |
a:hover { color: #fff; background-color:#000; } | |
</style> | |
</head> | |
<body> | |
<h1> | |
LoadError | |
in Api::ContactsController#show | |
</h1> | |
<pre>Expected /Users/doulos/Code/missionhub/app/helpers/api_helper.rb to define ApiHelper</pre> | |
<p><code>Rails.root: /Users/doulos/Code/missionhub</code></p> | |
<div id="traces"> | |
<a href="#" onclick="document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Application-Trace').style.display='block';; return false;">Application Trace</a> | | |
<a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='block';; return false;">Framework Trace</a> | | |
<a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='block';; return false;">Full Trace</a> | |
<div id="Application-Trace" style="display: block;"> | |
<pre><code>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'</code></pre> | |
</div> | |
<div id="Framework-Trace" style="display: none;"> | |
<pre><code>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'</code></pre> | |
</div> | |
<div id="Full-Trace" style="display: none;"> | |
<pre><code>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'</code></pre> | |
</div> | |
</div> | |
<pre id="blame_trace" ><code>This error occurred while loading the following files: | |
/Users/doulos/Code/missionhub/app/controllers/api/contacts_controller | |
/Users/doulos/Code/missionhub/app/controllers/api/contacts_controller.rb</code></pre> | |
<h2 style="margin-top: 30px">Request</h2> | |
<p><b>Parameters</b>: <pre>{"access_token"=>"e7c01a607441887f30467bdfe74c2bed02e464585ca62a5b8cc0207218dbfd12", | |
"id"=>"1282204"}</pre></p> | |
<p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p> | |
<div id="session_dump" style="display:none"><pre></pre></div> | |
<p><a href="#" onclick="document.getElementById('env_dump').style.display='block'; return false;">Show env dump</a></p> | |
<div id="env_dump" style="display:none"><pre>HTTP_ACCEPT: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" | |
REMOTE_ADDR: "127.0.0.1" | |
SERVER_NAME: "www.example.com"</pre></div> | |
<h2 style="margin-top: 30px">Response</h2> | |
<p><b>Headers</b>: <pre>None</pre></p> | |
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 | |
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 | |
# See http://m.onkey.org/running-rails-performance-tests-on-real-data | |
# START : HAX HAX HAX | |
# Load Rails environment in 'test' mode | |
RAILS_ENV = "test" | |
require File.expand_path('../../config/environment', __FILE__) | |
# Re-establish db connection for 'performance' mode | |
silence_warnings { RAILS_ENV = "performance" } | |
ActiveRecord::Base.establish_connection | |
# STOP : HAX HAX HAX | |
require_dependency 'application_controller' | |
require 'test/unit' | |
require 'active_support/core_ext/kernel/requires' | |
require 'active_support/test_case' | |
require 'action_controller/test_case' | |
require 'action_dispatch/testing/integration' | |
require 'rails/performance_test_help' | |
# require '/Users/doulos/Code/missionhub/app/controllers/api/people_controller.rb' | |
# require '/Users/doulos/Code/missionhub/app/helpers/api_helper.rb' | |
# You may want to turn off caching, if you're trying to improve non-cached rendering speed. | |
# Just uncomment this line: | |
# ActionController::Base.perform_caching = false | |
# Seems to be a bug in rails3, gives me a "wrong argument type Class (expected Module) (TypeError)" in Action Dispatch / performance_test.rb | |
#ActiveSupport::Testing::Performance | |
require 'rack/oauth2/server' | |
class ActionController::TestCase | |
include Devise::TestHelpers | |
end | |
unless defined?(Test::Unit::AssertionFailedError) | |
class Test::Unit::AssertionFailedError < ActiveSupport::TestCase::Assertion | |
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
request contact information associated with person | |
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="utf-8" /> | |
<title>Action Controller: Exception caught</title> | |
<style> | |
body { background-color: #fff; color: #333; } | |
body, p, ol, ul, td { | |
font-family: helvetica, verdana, arial, sans-serif; | |
font-size: 13px; | |
line-height: 18px; | |
} | |
pre { | |
background-color: #eee; | |
padding: 10px; | |
font-size: 11px; | |
} | |
a { color: #000; } | |
a:visited { color: #666; } | |
a:hover { color: #fff; background-color:#000; } | |
</style> | |
</head> | |
<body> | |
<h1> | |
LoadError | |
in Api::ContactsController#show | |
</h1> | |
<pre>Expected /Users/doulos/Code/missionhub/app/controllers/api/contacts_controller.rb to define Api::ContactsController</pre> | |
<p><code>Rails.root: /Users/doulos/Code/missionhub</code></p> | |
<div id="traces"> | |
<a href="#" onclick="document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Application-Trace').style.display='block';; return false;">Application Trace</a> | | |
<a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Full-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='block';; return false;">Framework Trace</a> | | |
<a href="#" onclick="document.getElementById('Application-Trace').style.display='none';document.getElementById('Framework-Trace').style.display='none';document.getElementById('Full-Trace').style.display='block';; return false;">Full Trace</a> | |
<div id="Application-Trace" style="display: block;"> | |
<pre><code>/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'</code></pre> | |
</div> | |
<div id="Framework-Trace" style="display: none;"> | |
<pre><code>/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'</code></pre> | |
</div> | |
<div id="Full-Trace" style="display: none;"> | |
<pre><code>/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'</code></pre> | |
</div> | |
</div> | |
<h2 style="margin-top: 30px">Request</h2> | |
<p><b>Parameters</b>: <pre>{"access_token"=>"e7c01a607441887f30467bdfe74c2bed02e464585ca62a5b8cc0207218dbfd12", | |
"id"=>"1282204"}</pre></p> | |
<p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p> | |
<div id="session_dump" style="display:none"><pre></pre></div> | |
<p><a href="#" onclick="document.getElementById('env_dump').style.display='block'; return false;">Show env dump</a></p> | |
<div id="env_dump" style="display:none"><pre>HTTP_ACCEPT: "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5" | |
REMOTE_ADDR: "127.0.0.1" | |
SERVER_NAME: "www.example.com"</pre></div> | |
<h2 style="margin-top: 30px">Response</h2> | |
<p><b>Headers</b>: <pre>None</pre></p> | |
</body> | |
</html> |
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
ENV["RAILS_ENV"] = "test" | |
# require 'simplecov' | |
# SimpleCov.start 'rails' do | |
# add_filter "vendor" | |
# merge_timeout 36000 | |
# end | |
require File.expand_path('../../config/environment', __FILE__) | |
require 'rack/oauth2/server' | |
require 'rails/test_help' | |
require 'shoulda/rails' | |
require 'ephemeral_response' | |
require 'factory_girl' | |
require File.dirname(__FILE__) + "/factories" | |
EphemeralResponse.activate | |
EphemeralResponse.configure do |config| | |
config.fixture_directory = "test/fixtures/ephemeral_response" | |
config.white_list = 'localhost' | |
end | |
#Devise::OmniAuth.test_mode! | |
OmniAuth.config.test_mode = true | |
OmniAuth.config.add_mock(:facebook, {"provider"=>"facebook", "uid"=>"690860831", "credentials"=>{"token"=>"164949660195249|bd3f24d52b4baf9412141538.1-690860831|w79R36CalrEAY-9e9kp8fDWJ69A"}, "user_info"=>{"nickname"=>"mattrw89", "email"=>"[email protected]", "first_name"=>"Matt", "last_name"=>"Webb", "name"=>"Matt Webb", "image"=>"http://graph.facebook.com/690860831/picture?type=square", "urls"=>{"Facebook"=>"http://www.facebook.com/mattrw89", "Website"=>nil}}, "extra"=>{"user_hash"=>{"id"=>"690860831", "name"=>"Matt Webb", "first_name"=>"Matt", "last_name"=>"Webb", "link"=>"http://www.facebook.com/mattrw89", "username"=>"mattrw89", "birthday"=>"12/18/1989", "location"=>{"id"=>"108288992526695", "name"=>"Orlando, Florida"}, "education"=>[{"school"=>{"id"=>"115045251844283", "name"=>"Niceville Senior High"}, "year"=>{"id"=>"141778012509913", "name"=>"2008"}, "type"=>"High School"}, {"school"=>{"id"=>"35078114590", "name"=>"University of Central Florida"}, "year"=>{"id"=>"118118634930920", "name"=>"2012"}, "concentration"=>[{"id"=>"124764794262413", "name"=>"Electrical Engineering"}], "type"=>"College"}], "gender"=>"male", "email"=>"[email protected]", "timezone"=>-4, "locale"=>"en_US", "languages"=>[{"id"=>"137946929599946", "name"=>"FORTRAN 66,77"}, {"id"=>"133255596736945", "name"=>"ruby"}, {"id"=>"189887071024044", "name"=>"Objective C"}], "verified"=>true, "updated_time"=>"2011-05-23T12:07:56+0000"}}}) | |
class ActiveSupport::TestCase | |
# Setup all fixtures in test/fixtures/*.(yml|csv) for all tests in alphabetical order. | |
# | |
# Note: You'll currently still have to declare fixtures explicitly in integration tests | |
# -- they do not yet inherit this setting | |
# fixtures :all | |
# Add more helper methods to be used by all tests here... | |
end | |
class ActionController::TestCase | |
include Devise::TestHelpers | |
end | |
unless defined?(Test::Unit::AssertionFailedError) | |
class Test::Unit::AssertionFailedError < ActiveSupport::TestCase::Assertion | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment