board-client 0.3.0 → 0.99.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/.gitignore +4 -0
  2. data/.rspec +1 -0
  3. data/.rvmrc +47 -0
  4. data/Gemfile +1 -7
  5. data/README.md +63 -17
  6. data/Rakefile +4 -44
  7. data/board-client.gemspec +22 -66
  8. data/lib/board/client.rb +41 -22
  9. data/lib/board/client/api.rb +29 -0
  10. data/lib/board/client/candidates.rb +13 -0
  11. data/lib/board/client/organizations.rb +17 -0
  12. data/lib/board/client/request.rb +98 -0
  13. data/lib/board/client/user_organizations.rb +20 -0
  14. data/lib/board/client/users.rb +21 -0
  15. data/lib/board/client/version.rb +5 -0
  16. data/spec/board/client_spec.rb +27 -83
  17. data/spec/cassettes/candidate_exists_with_id.yml +30 -0
  18. data/spec/cassettes/candidate_id_does_not_exist.yml +336 -0
  19. data/spec/cassettes/candidate_invite_email_exists.yml +30 -0
  20. data/spec/cassettes/candidate_invite_when_invalid.yml +30 -0
  21. data/spec/cassettes/candidate_invite_when_valid.yml +32 -0
  22. data/spec/cassettes/list_user_organizations_with_invalid_id.yml +346 -0
  23. data/spec/cassettes/list_user_organizations_with_valid_id.yml +30 -0
  24. data/spec/cassettes/organization_add_user.yml +26 -0
  25. data/spec/cassettes/organization_add_user_-_organization_does_not_exist.yml +356 -0
  26. data/spec/cassettes/organization_add_user_-_user_does_not_exist.yml +348 -0
  27. data/spec/cassettes/organization_create_is_invalid.yml +30 -0
  28. data/spec/cassettes/organization_create_is_valid.yml +32 -0
  29. data/spec/cassettes/organization_exists_with_email.yml +30 -0
  30. data/spec/cassettes/organization_exists_with_id.yml +30 -0
  31. data/spec/cassettes/organization_id_does_not_exist.yml +354 -0
  32. data/spec/cassettes/organization_name_does_not_exist.yml +334 -0
  33. data/spec/cassettes/unsubscribe_email_does_not_exist.yml +340 -0
  34. data/spec/cassettes/unsubscribe_email_exists.yml +30 -0
  35. data/spec/cassettes/user_does_exist.yml +30 -0
  36. data/spec/cassettes/user_does_not_exist.yml +32 -0
  37. data/spec/cassettes/user_email_does_not_exist.yml +334 -0
  38. data/spec/cassettes/user_email_md5_does_not_exist.yml +334 -0
  39. data/spec/cassettes/user_exists_with_email.yml +30 -0
  40. data/spec/cassettes/user_exists_with_email_md5.yml +30 -0
  41. data/spec/cassettes/user_exists_with_id.yml +30 -0
  42. data/spec/cassettes/user_id_does_not_exist.yml +346 -0
  43. data/spec/cassettes/user_missing_attributes.yml +30 -0
  44. data/spec/integration/candidates/find_spec.rb +28 -0
  45. data/spec/integration/candidates/invite_spec.rb +48 -0
  46. data/spec/integration/organizations/add_user_spec.rb +34 -0
  47. data/spec/integration/organizations/create_spec.rb +38 -0
  48. data/spec/integration/organizations/find_spec.rb +50 -0
  49. data/spec/integration/users/create_spec.rb +54 -0
  50. data/spec/integration/users/find_spec.rb +73 -0
  51. data/spec/integration/users/list_organizations_spec.rb +36 -0
  52. data/spec/integration/users/unsubscribe_spec.rb +27 -0
  53. data/spec/spec_helper.rb +6 -5
  54. data/spec/support/integration_helpers.rb +17 -0
  55. data/spec/support/vcr.rb +11 -0
  56. metadata +144 -52
  57. data/Gemfile.lock +0 -22
  58. data/lib/board/candidate_search.rb +0 -45
  59. data/lib/board/request.rb +0 -78
  60. data/spec/board/candidate_search_spec.rb +0 -45
  61. data/spec/spec.opts +0 -1
@@ -0,0 +1,98 @@
1
+ require 'uri'
2
+ require 'net/http'
3
+ require 'net/https'
4
+
5
+ module Board
6
+ module Client::Request
7
+
8
+ def post(path, params)
9
+ request path, params, :post
10
+ end
11
+
12
+ def get(path, params = {})
13
+ request path, params, :get
14
+ end
15
+
16
+ def request(path, params, method)
17
+ params.merge!(:user_credentials => @api_key)
18
+
19
+ uri = URI.parse(@endpoint + path)
20
+ http = Net::HTTP.new(uri.host, uri.port)
21
+
22
+ if uri.port == 443 # ssl?
23
+ http.use_ssl = true
24
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
25
+ end
26
+
27
+ case method
28
+ when :get
29
+ request = Net::HTTP::Get.new(uri.request_uri)
30
+ when :post
31
+ request = Net::HTTP::Post.new(uri.request_uri)
32
+ end
33
+
34
+ request.set_form_data(params)
35
+ response = http.request(request)
36
+
37
+ case response.code
38
+ when /2../
39
+ if response.body.empty?
40
+ true
41
+ else
42
+ Yajl::Parser.parse(response.body)
43
+ end
44
+ when '400'
45
+ raise Client::BadRequest.new(response)
46
+ when '401'
47
+ raise Client::Unauthorized.new(response)
48
+ when '403'
49
+ raise Client::Forbidden.new(response)
50
+ when '404'
51
+ raise Client::NotFound.new(response)
52
+ when '406'
53
+ raise Client::NotAcceptable.new(response)
54
+ when '409'
55
+ raise Client::Conflict.new(response)
56
+ when '422'
57
+ raise Client::UnprocessableEntity.new(response)
58
+ when '500'
59
+ raise Client::InternalServerError.new(response)
60
+ when '501'
61
+ raise Client::NotImplemented.new(response)
62
+ when '502'
63
+ raise Client::BadGateway.new(response)
64
+ when '503'
65
+ raise Client::ServiceUnavailable.new(response)
66
+ else
67
+ raise Client::Error.new(response)
68
+ end
69
+ end
70
+
71
+ def hash_to_query_string(hash)
72
+ params = ''
73
+ stack = []
74
+
75
+ hash.each do |k, v|
76
+ if v.is_a?(Hash)
77
+ stack << [k,v]
78
+ else
79
+ params << "#{k}=#{v}&"
80
+ end
81
+ end
82
+
83
+ stack.each do |parent, hash|
84
+ hash.each do |k, v|
85
+ if v.is_a?(Hash)
86
+ stack << ["#{parent}[#{k}]", v]
87
+ else
88
+ params << "#{parent}[#{k}]=#{v}&"
89
+ end
90
+ end
91
+ end
92
+
93
+ params.chop! # trailing &
94
+ params
95
+ end
96
+
97
+ end
98
+ end
@@ -0,0 +1,20 @@
1
+ module Board
2
+ class Client::UserOrganizations < Client::API
3
+
4
+ def list(attributes)
5
+ user_id = attributes.fetch(:user_id) {
6
+ raise ArgumentError, "user_id is required"
7
+ }
8
+
9
+ get("/users/#{user_id}/organizations")
10
+ end
11
+
12
+ def create(attributes)
13
+ user_id = attributes.fetch(:user_id)
14
+ organization_id = attributes.fetch(:organization_id)
15
+
16
+ post("/users/#{user_id}/organizations", :id => organization_id)
17
+ end
18
+
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ module Board
2
+ class Client::Users < Client::API
3
+
4
+ def create(attributes)
5
+ post("/users", attributes)
6
+ end
7
+
8
+ def find(id)
9
+ if id.is_a?(Hash)
10
+ get("/users", id)
11
+ else
12
+ get("/users/#{id}")
13
+ end
14
+ end
15
+
16
+ def unsubscribe(email)
17
+ get("/users/unsubscribe", :email => email)
18
+ end
19
+
20
+ end
21
+ end
@@ -0,0 +1,5 @@
1
+ module Board
2
+ class Client
3
+ VERSION = '0.99.0'
4
+ end
5
+ end
@@ -1,30 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- module RequestTracking
4
-
5
- class Request < Struct.new(:path, :params, :method); end
6
-
7
- def request(path, params, method)
8
- requests << Request.new(path, params, method)
9
- end
10
-
11
- def requests
12
- @requests ||= []
13
- end
14
-
15
- end
16
-
17
3
  describe Board::Client do
18
4
 
19
- let(:client) {
20
- client = Board::Client.new('VALID_KEY')
21
- client.extend(RequestTracking)
22
- client
23
- }
24
-
25
- def last_request
26
- @last_request ||= client.requests.last
27
- end
5
+ let(:client) { Board::Client.new('VALID_KEY') }
28
6
 
29
7
  describe "when creating" do
30
8
  context 'and missing an API key' do
@@ -40,66 +18,32 @@ describe Board::Client do
40
18
  end
41
19
  end
42
20
 
43
- describe '#candidate_searches' do
44
- it 'performs the correct request' do
45
- client.candidate_searches(:keywords => 'ruby', :location => 'Cincinnati')
46
-
47
- last_request.path.should == '/candidate_searches'
48
- last_request.method.should == :get
49
- last_request.params.should == {
50
- :keywords => "ruby",
51
- :location => "Cincinnati",
52
- }
53
- end
54
- end
55
-
56
- describe '#find_user' do
57
- it 'performs the correct request' do
58
- client.find_user(:email => 'bob@rm.com')
59
-
60
- last_request.path.should == '/users'
61
- last_request.method.should == :get
62
- last_request.params.should == { :email => 'bob@rm.com' }
63
- end
64
- end
65
-
66
- describe '#mark_user_invalid' do
67
- it 'performs the correct request' do
68
- client.mark_user_invalid(:email => 'bob@rm.com')
69
-
70
- last_request.path.should == '/users/invalid'
71
- last_request.method.should == :get
72
- last_request.params.should == { :email => 'bob@rm.com' }
73
- end
74
- end
75
-
76
- describe '#unsubscribe' do
77
- it 'performs the correct request' do
78
- client.unsubscribe(:email => 'bob@rm.com')
79
-
80
- last_request.path.should == '/users/unsubscribe'
81
- last_request.method.should == :get
82
- last_request.params.should == { :email => 'bob@rm.com' }
83
- end
84
- end
85
-
86
- describe '#create_candidate_invitation' do
87
- it 'performs the correct request' do
88
- client.create_candidate_invitation(:email => 'bob@rm.com')
89
-
90
- last_request.path.should == '/candidate_invitations'
91
- last_request.method.should == :post
92
- last_request.params.should == { :email => 'bob@rm.com' }
93
- end
94
- end
95
-
96
- describe '#candidates' do
97
- it 'performs the correct request' do
98
- client.find_candidate(42)
99
-
100
- last_request.path.should == '/candidates/42'
101
- last_request.method.should == :get
102
- last_request.params.should == {}
21
+ describe "when processing responses" do
22
+ {
23
+ 400 => Board::Client::BadRequest,
24
+ 401 => Board::Client::Unauthorized,
25
+ 403 => Board::Client::Forbidden,
26
+ 404 => Board::Client::NotFound,
27
+ 406 => Board::Client::NotAcceptable,
28
+ 409 => Board::Client::Conflict,
29
+ 422 => Board::Client::UnprocessableEntity,
30
+ 500 => Board::Client::InternalServerError,
31
+ 501 => Board::Client::NotImplemented,
32
+ 502 => Board::Client::BadGateway,
33
+ 503 => Board::Client::ServiceUnavailable,
34
+ }.each do |code, exception|
35
+ context "when HTTP status code is #{code}" do
36
+ before do
37
+ stub_request(:get, 'http://localhost:3000/api/v1/users/42').
38
+ to_return(:status => code)
39
+ end
40
+
41
+ it "raises #{exception.name} error" do
42
+ expect {
43
+ client.users.find(42)
44
+ }.to raise_error(exception)
45
+ end
46
+ end
103
47
  end
104
48
  end
105
49
 
@@ -0,0 +1,30 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://localhost:3000/api/v1/candidates/100
6
+ body: user_credentials=Bdrc3t1LaiWtygbJ4jD6
7
+ headers:
8
+ content-type:
9
+ - application/x-www-form-urlencoded
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 200
13
+ message: OK
14
+ headers:
15
+ x-ua-compatible:
16
+ - IE=Edge
17
+ etag:
18
+ - "\"df04f11b2167cb0eedf2f169014bfaec\""
19
+ content-type:
20
+ - application/json; charset=utf-8
21
+ date:
22
+ - Mon, 29 Aug 2011 18:18:58 GMT
23
+ x-runtime:
24
+ - "0.929935"
25
+ cache-control:
26
+ - max-age=0, private, must-revalidate
27
+ transfer-encoding:
28
+ - chunked
29
+ body: "{\"resume_text\":null,\"full_time\":false,\"city\":\"Kaelaview\",\"location\":\"Kaelaview, OH\",\"minimum_compensation\":41070,\"zip_code\":null,\"resume_filename\":null,\"seasonal\":false,\"part_time\":false,\"last_activity_at\":\"2011-08-16T18:18:19Z\",\"id\":100,\"willing_to_relocate\":false,\"work_interests\":[1014,1070,1087,1090],\"phone\":null,\"profile_url\":\"https://localhost/candidates/100\",\"resume_url\":null,\"highest_education_level\":4,\"internship\":false,\"last_name\":\"Reichel\",\"contract\":false,\"email\":\"candidate@recruitmilitary.com\",\"state\":\"OH\",\"first_name\":\"Raina\"}"
30
+ http_version: "1.1"
@@ -0,0 +1,336 @@
1
+ ---
2
+ - !ruby/struct:VCR::HTTPInteraction
3
+ request: !ruby/struct:VCR::Request
4
+ method: :get
5
+ uri: http://localhost:3000/api/v1/candidates/42
6
+ body: user_credentials=Bdrc3t1LaiWtygbJ4jD6
7
+ headers:
8
+ content-type:
9
+ - application/x-www-form-urlencoded
10
+ response: !ruby/struct:VCR::Response
11
+ status: !ruby/struct:VCR::ResponseStatus
12
+ code: 404
13
+ message: Not Found
14
+ headers:
15
+ content-type:
16
+ - text/html
17
+ date:
18
+ - Mon, 29 Aug 2011 18:19:00 GMT
19
+ x-runtime:
20
+ - "0.412695"
21
+ content-length:
22
+ - "51248"
23
+ body: |
24
+ <html xmlns="http://www.w3.org/1999/xhtml">
25
+ <head>
26
+ <title>Action Controller: Exception caught</title>
27
+ <style>
28
+ body { background-color: #fff; color: #333; }
29
+
30
+ body, p, ol, ul, td {
31
+ font-family: verdana, arial, helvetica, sans-serif;
32
+ font-size: 13px;
33
+ line-height: 18px;
34
+ }
35
+
36
+ pre {
37
+ background-color: #eee;
38
+ padding: 10px;
39
+ font-size: 11px;
40
+ }
41
+
42
+ a { color: #000; }
43
+ a:visited { color: #666; }
44
+ a:hover { color: #fff; background-color:#000; }
45
+ </style>
46
+ </head>
47
+ <body>
48
+
49
+ <h1>
50
+ ActiveRecord::RecordNotFound
51
+ in Api::V1::CandidatesController#show
52
+ </h1>
53
+ <pre>Couldn't find User with ID=42</pre>
54
+
55
+
56
+ <p><code>Rails.root: /Users/michaelguterl/code/rm/board</code></p>
57
+
58
+ <div id="traces">
59
+ <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> |
60
+ <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> |
61
+ <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>
62
+
63
+ <div id="Application-Trace" style="display: block;">
64
+ <pre><code>app/controllers/api/v1/candidates_controller.rb:19:in `find_candidate'</code></pre>
65
+ </div>
66
+ <div id="Framework-Trace" style="display: none;">
67
+ <pre><code>activerecord (3.0.9) lib/active_record/relation/finder_methods.rb:304:in `find_one'
68
+ friendly_id (3.2.1) lib/friendly_id/active_record_adapter/relation.rb:148:in `find_one'
69
+ activerecord (3.0.9) lib/active_record/relation/finder_methods.rb:289:in `find_with_ids'
70
+ activerecord (3.0.9) lib/active_record/relation/finder_methods.rb:107:in `find'
71
+ activerecord (3.0.9) lib/active_record/base.rb:444:in `__send__'
72
+ activerecord (3.0.9) lib/active_record/base.rb:444:in `find'
73
+ activesupport (3.0.9) lib/active_support/callbacks.rb:472:in `_run__154108811__process_action__453433196__callbacks'
74
+ activesupport (3.0.9) lib/active_support/callbacks.rb:410:in `send'
75
+ activesupport (3.0.9) lib/active_support/callbacks.rb:410:in `_run_process_action_callbacks'
76
+ activesupport (3.0.9) lib/active_support/callbacks.rb:94:in `send'
77
+ activesupport (3.0.9) lib/active_support/callbacks.rb:94:in `run_callbacks'
78
+ actionpack (3.0.9) lib/abstract_controller/callbacks.rb:17:in `process_action'
79
+ actionpack (3.0.9) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
80
+ activesupport (3.0.9) lib/active_support/notifications.rb:52:in `instrument'
81
+ activesupport (3.0.9) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
82
+ activesupport (3.0.9) lib/active_support/notifications.rb:52:in `instrument'
83
+ actionpack (3.0.9) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
84
+ actionpack (3.0.9) lib/action_controller/metal/rescue.rb:17:in `process_action'
85
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/rails3/action_controller.rb:34:in `process_action'
86
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/controller_instrumentation.rb:253:in `perform_action_with_newrelic_trace'
87
+ newrelic_rpm (3.0.1) lib/new_relic/agent/method_tracer.rb:193:in `trace_execution_scoped'
88
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/controller_instrumentation.rb:248:in `perform_action_with_newrelic_trace'
89
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/rails3/action_controller.rb:33:in `process_action'
90
+ actionpack (3.0.9) lib/abstract_controller/base.rb:119:in `process'
91
+ actionpack (3.0.9) lib/abstract_controller/rendering.rb:41:in `process'
92
+ actionpack (3.0.9) lib/action_controller/metal.rb:138:in `dispatch'
93
+ actionpack (3.0.9) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
94
+ actionpack (3.0.9) lib/action_controller/metal.rb:178:in `action'
95
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:62:in `call'
96
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
97
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:27:in `call'
98
+ rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:in `call'
99
+ rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in `recognize'
100
+ rack-mount (0.6.14) lib/rack/mount/code_generation.rb:75:in `optimized_each'
101
+ rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in `recognize'
102
+ rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:in `call'
103
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:493:in `call'
104
+ /Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/bundler/gems/oauth2-provider-465353dcca4f/lib/oauth2/provider/rack/middleware.rb:14:in `call'
105
+ /Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/bundler/gems/oauth2-provider-465353dcca4f/lib/oauth2/provider/rack/middleware.rb:10:in `catch'
106
+ /Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/bundler/gems/oauth2-provider-465353dcca4f/lib/oauth2/provider/rack/middleware.rb:10:in `call'
107
+ newrelic_rpm (3.0.1) lib/new_relic/rack/browser_monitoring.rb:18:in `call'
108
+ newrelic_rpm (3.0.1) lib/new_relic/rack/developer_mode.rb:24:in `call'
109
+ hoptoad_notifier (2.4.11) lib/hoptoad_notifier/rack.rb:27:in `call'
110
+ haml (3.0.25) lib/sass/plugin/rack.rb:41:in `call'
111
+ actionpack (3.0.9) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
112
+ actionpack (3.0.9) lib/action_dispatch/middleware/head.rb:14:in `call'
113
+ rack (1.2.3) lib/rack/methodoverride.rb:24:in `call'
114
+ actionpack (3.0.9) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
115
+ actionpack (3.0.9) lib/action_dispatch/middleware/flash.rb:182:in `call'
116
+ actionpack (3.0.9) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
117
+ actionpack (3.0.9) lib/action_dispatch/middleware/cookies.rb:302:in `call'
118
+ activerecord (3.0.9) lib/active_record/query_cache.rb:32:in `call'
119
+ activerecord (3.0.9) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
120
+ activerecord (3.0.9) lib/active_record/query_cache.rb:12:in `cache'
121
+ activerecord (3.0.9) lib/active_record/query_cache.rb:31:in `call'
122
+ activerecord (3.0.9) lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in `call'
123
+ actionpack (3.0.9) lib/action_dispatch/middleware/callbacks.rb:46:in `call'
124
+ activesupport (3.0.9) lib/active_support/callbacks.rb:416:in `_run_call_callbacks'
125
+ actionpack (3.0.9) lib/action_dispatch/middleware/callbacks.rb:44:in `call'
126
+ rack (1.2.3) lib/rack/sendfile.rb:107:in `call'
127
+ actionpack (3.0.9) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
128
+ actionpack (3.0.9) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
129
+ railties (3.0.9) lib/rails/rack/logger.rb:13:in `call'
130
+ rack (1.2.3) lib/rack/runtime.rb:17:in `call'
131
+ activesupport (3.0.9) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
132
+ rack (1.2.3) lib/rack/lock.rb:11:in `call'
133
+ rack (1.2.3) lib/rack/lock.rb:11:in `synchronize'
134
+ rack (1.2.3) lib/rack/lock.rb:11:in `call'
135
+ actionpack (3.0.9) lib/action_dispatch/middleware/static.rb:30:in `call'
136
+ hoptoad_notifier (2.4.11) lib/hoptoad_notifier/user_informer.rb:12:in `call'
137
+ railties (3.0.9) lib/rails/application.rb:168:in `call'
138
+ railties (3.0.9) lib/rails/application.rb:77:in `send'
139
+ railties (3.0.9) lib/rails/application.rb:77:in `method_missing'
140
+ rack (1.2.3) lib/rack/urlmap.rb:47:in `call'
141
+ rack (1.2.3) lib/rack/urlmap.rb:41:in `each'
142
+ rack (1.2.3) lib/rack/urlmap.rb:41:in `call'
143
+ railties (3.0.9) lib/rails/rack/log_tailer.rb:14:in `call'
144
+ rack (1.2.3) lib/rack/content_length.rb:13:in `call'
145
+ rack (1.2.3) lib/rack/chunked.rb:15:in `call'
146
+ rack (1.2.3) lib/rack/handler/mongrel.rb:67:in `process'
147
+ mongrel (1.1.5) lib/mongrel.rb:159:in `process_client'
148
+ mongrel (1.1.5) lib/mongrel.rb:158:in `each'
149
+ mongrel (1.1.5) lib/mongrel.rb:158:in `process_client'
150
+ mongrel (1.1.5) lib/mongrel.rb:285:in `run'
151
+ mongrel (1.1.5) lib/mongrel.rb:285:in `initialize'
152
+ mongrel (1.1.5) lib/mongrel.rb:285:in `new'
153
+ mongrel (1.1.5) lib/mongrel.rb:285:in `run'
154
+ mongrel (1.1.5) lib/mongrel.rb:268:in `initialize'
155
+ mongrel (1.1.5) lib/mongrel.rb:268:in `new'
156
+ mongrel (1.1.5) lib/mongrel.rb:268:in `run'
157
+ rack (1.2.3) lib/rack/handler/mongrel.rb:38:in `run'
158
+ rack (1.2.3) lib/rack/server.rb:217:in `start'
159
+ railties (3.0.9) lib/rails/commands/server.rb:65:in `start'
160
+ railties (3.0.9) lib/rails/commands.rb:30
161
+ railties (3.0.9) lib/rails/commands.rb:27:in `tap'
162
+ railties (3.0.9) lib/rails/commands.rb:27
163
+ script/rails:6:in `require'
164
+ script/rails:6</code></pre>
165
+ </div>
166
+ <div id="Full-Trace" style="display: none;">
167
+ <pre><code>activerecord (3.0.9) lib/active_record/relation/finder_methods.rb:304:in `find_one'
168
+ friendly_id (3.2.1) lib/friendly_id/active_record_adapter/relation.rb:148:in `find_one'
169
+ activerecord (3.0.9) lib/active_record/relation/finder_methods.rb:289:in `find_with_ids'
170
+ activerecord (3.0.9) lib/active_record/relation/finder_methods.rb:107:in `find'
171
+ activerecord (3.0.9) lib/active_record/base.rb:444:in `__send__'
172
+ activerecord (3.0.9) lib/active_record/base.rb:444:in `find'
173
+ app/controllers/api/v1/candidates_controller.rb:19:in `find_candidate'
174
+ activesupport (3.0.9) lib/active_support/callbacks.rb:472:in `_run__154108811__process_action__453433196__callbacks'
175
+ activesupport (3.0.9) lib/active_support/callbacks.rb:410:in `send'
176
+ activesupport (3.0.9) lib/active_support/callbacks.rb:410:in `_run_process_action_callbacks'
177
+ activesupport (3.0.9) lib/active_support/callbacks.rb:94:in `send'
178
+ activesupport (3.0.9) lib/active_support/callbacks.rb:94:in `run_callbacks'
179
+ actionpack (3.0.9) lib/abstract_controller/callbacks.rb:17:in `process_action'
180
+ actionpack (3.0.9) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
181
+ activesupport (3.0.9) lib/active_support/notifications.rb:52:in `instrument'
182
+ activesupport (3.0.9) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
183
+ activesupport (3.0.9) lib/active_support/notifications.rb:52:in `instrument'
184
+ actionpack (3.0.9) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
185
+ actionpack (3.0.9) lib/action_controller/metal/rescue.rb:17:in `process_action'
186
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/rails3/action_controller.rb:34:in `process_action'
187
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/controller_instrumentation.rb:253:in `perform_action_with_newrelic_trace'
188
+ newrelic_rpm (3.0.1) lib/new_relic/agent/method_tracer.rb:193:in `trace_execution_scoped'
189
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/controller_instrumentation.rb:248:in `perform_action_with_newrelic_trace'
190
+ newrelic_rpm (3.0.1) lib/new_relic/agent/instrumentation/rails3/action_controller.rb:33:in `process_action'
191
+ actionpack (3.0.9) lib/abstract_controller/base.rb:119:in `process'
192
+ actionpack (3.0.9) lib/abstract_controller/rendering.rb:41:in `process'
193
+ actionpack (3.0.9) lib/action_controller/metal.rb:138:in `dispatch'
194
+ actionpack (3.0.9) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
195
+ actionpack (3.0.9) lib/action_controller/metal.rb:178:in `action'
196
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:62:in `call'
197
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:62:in `dispatch'
198
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:27:in `call'
199
+ rack-mount (0.6.14) lib/rack/mount/route_set.rb:148:in `call'
200
+ rack-mount (0.6.14) lib/rack/mount/code_generation.rb:93:in `recognize'
201
+ rack-mount (0.6.14) lib/rack/mount/code_generation.rb:75:in `optimized_each'
202
+ rack-mount (0.6.14) lib/rack/mount/code_generation.rb:92:in `recognize'
203
+ rack-mount (0.6.14) lib/rack/mount/route_set.rb:139:in `call'
204
+ actionpack (3.0.9) lib/action_dispatch/routing/route_set.rb:493:in `call'
205
+ /Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/bundler/gems/oauth2-provider-465353dcca4f/lib/oauth2/provider/rack/middleware.rb:14:in `call'
206
+ /Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/bundler/gems/oauth2-provider-465353dcca4f/lib/oauth2/provider/rack/middleware.rb:10:in `catch'
207
+ /Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/bundler/gems/oauth2-provider-465353dcca4f/lib/oauth2/provider/rack/middleware.rb:10:in `call'
208
+ newrelic_rpm (3.0.1) lib/new_relic/rack/browser_monitoring.rb:18:in `call'
209
+ newrelic_rpm (3.0.1) lib/new_relic/rack/developer_mode.rb:24:in `call'
210
+ hoptoad_notifier (2.4.11) lib/hoptoad_notifier/rack.rb:27:in `call'
211
+ haml (3.0.25) lib/sass/plugin/rack.rb:41:in `call'
212
+ actionpack (3.0.9) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
213
+ actionpack (3.0.9) lib/action_dispatch/middleware/head.rb:14:in `call'
214
+ rack (1.2.3) lib/rack/methodoverride.rb:24:in `call'
215
+ actionpack (3.0.9) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
216
+ actionpack (3.0.9) lib/action_dispatch/middleware/flash.rb:182:in `call'
217
+ actionpack (3.0.9) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call'
218
+ actionpack (3.0.9) lib/action_dispatch/middleware/cookies.rb:302:in `call'
219
+ activerecord (3.0.9) lib/active_record/query_cache.rb:32:in `call'
220
+ activerecord (3.0.9) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache'
221
+ activerecord (3.0.9) lib/active_record/query_cache.rb:12:in `cache'
222
+ activerecord (3.0.9) lib/active_record/query_cache.rb:31:in `call'
223
+ activerecord (3.0.9) lib/active_record/connection_adapters/abstract/connection_pool.rb:354:in `call'
224
+ actionpack (3.0.9) lib/action_dispatch/middleware/callbacks.rb:46:in `call'
225
+ activesupport (3.0.9) lib/active_support/callbacks.rb:416:in `_run_call_callbacks'
226
+ actionpack (3.0.9) lib/action_dispatch/middleware/callbacks.rb:44:in `call'
227
+ rack (1.2.3) lib/rack/sendfile.rb:107:in `call'
228
+ actionpack (3.0.9) lib/action_dispatch/middleware/remote_ip.rb:48:in `call'
229
+ actionpack (3.0.9) lib/action_dispatch/middleware/show_exceptions.rb:47:in `call'
230
+ railties (3.0.9) lib/rails/rack/logger.rb:13:in `call'
231
+ rack (1.2.3) lib/rack/runtime.rb:17:in `call'
232
+ activesupport (3.0.9) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
233
+ rack (1.2.3) lib/rack/lock.rb:11:in `call'
234
+ rack (1.2.3) lib/rack/lock.rb:11:in `synchronize'
235
+ rack (1.2.3) lib/rack/lock.rb:11:in `call'
236
+ actionpack (3.0.9) lib/action_dispatch/middleware/static.rb:30:in `call'
237
+ hoptoad_notifier (2.4.11) lib/hoptoad_notifier/user_informer.rb:12:in `call'
238
+ railties (3.0.9) lib/rails/application.rb:168:in `call'
239
+ railties (3.0.9) lib/rails/application.rb:77:in `send'
240
+ railties (3.0.9) lib/rails/application.rb:77:in `method_missing'
241
+ rack (1.2.3) lib/rack/urlmap.rb:47:in `call'
242
+ rack (1.2.3) lib/rack/urlmap.rb:41:in `each'
243
+ rack (1.2.3) lib/rack/urlmap.rb:41:in `call'
244
+ railties (3.0.9) lib/rails/rack/log_tailer.rb:14:in `call'
245
+ rack (1.2.3) lib/rack/content_length.rb:13:in `call'
246
+ rack (1.2.3) lib/rack/chunked.rb:15:in `call'
247
+ rack (1.2.3) lib/rack/handler/mongrel.rb:67:in `process'
248
+ mongrel (1.1.5) lib/mongrel.rb:159:in `process_client'
249
+ mongrel (1.1.5) lib/mongrel.rb:158:in `each'
250
+ mongrel (1.1.5) lib/mongrel.rb:158:in `process_client'
251
+ mongrel (1.1.5) lib/mongrel.rb:285:in `run'
252
+ mongrel (1.1.5) lib/mongrel.rb:285:in `initialize'
253
+ mongrel (1.1.5) lib/mongrel.rb:285:in `new'
254
+ mongrel (1.1.5) lib/mongrel.rb:285:in `run'
255
+ mongrel (1.1.5) lib/mongrel.rb:268:in `initialize'
256
+ mongrel (1.1.5) lib/mongrel.rb:268:in `new'
257
+ mongrel (1.1.5) lib/mongrel.rb:268:in `run'
258
+ rack (1.2.3) lib/rack/handler/mongrel.rb:38:in `run'
259
+ rack (1.2.3) lib/rack/server.rb:217:in `start'
260
+ railties (3.0.9) lib/rails/commands/server.rb:65:in `start'
261
+ railties (3.0.9) lib/rails/commands.rb:30
262
+ railties (3.0.9) lib/rails/commands.rb:27:in `tap'
263
+ railties (3.0.9) lib/rails/commands.rb:27
264
+ script/rails:6:in `require'
265
+ script/rails:6</code></pre>
266
+ </div>
267
+ </div>
268
+
269
+
270
+
271
+ <h2 style="margin-top: 30px">Request</h2>
272
+ <p><b>Parameters</b>: <pre>{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;,
273
+ &quot;id&quot;=&gt;&quot;42&quot;}</pre></p>
274
+
275
+ <p><a href="#" onclick="document.getElementById('session_dump').style.display='block'; return false;">Show session dump</a></p>
276
+ <div id="session_dump" style="display:none"><pre></pre></div>
277
+
278
+ <p><a href="#" onclick="document.getElementById('env_dump').style.display='block'; return false;">Show env dump</a></p>
279
+ <div id="env_dump" style="display:none"><pre>CONTENT_LENGTH: &quot;37&quot;
280
+ CONTENT_TYPE: &quot;application/x-www-form-urlencoded&quot;
281
+ GATEWAY_INTERFACE: &quot;CGI/1.2&quot;
282
+ HTTP_ACCEPT: &quot;*/*&quot;
283
+ HTTP_HOST: &quot;localhost:3000&quot;
284
+ HTTP_VERSION: &quot;HTTP/1.1&quot;
285
+ PATH_INFO: &quot;/api/v1/candidates/42&quot;
286
+ QUERY_STRING: &quot;&quot;
287
+ REMOTE_ADDR: &quot;127.0.0.1&quot;
288
+ REQUEST_METHOD: &quot;GET&quot;
289
+ REQUEST_PATH: &quot;/api/v1/candidates/42&quot;
290
+ REQUEST_URI: &quot;/api/v1/candidates/42&quot;
291
+ SCRIPT_NAME: &quot;&quot;
292
+ SERVER_NAME: &quot;localhost&quot;
293
+ SERVER_PORT: &quot;3000&quot;
294
+ SERVER_PROTOCOL: &quot;HTTP/1.1&quot;
295
+ SERVER_SOFTWARE: &quot;Mongrel 1.1.5&quot;
296
+ action_controller.instance: #&lt;Api::V1::CandidatesController:0x10e2a26c8 @_action_name=&quot;show&quot;, @_headers={&quot;Content-Type&quot;=&gt;&quot;text/html&quot;}, @current_user_session=#&lt;UserSession: {:unauthorized_record=&gt;&quot;&lt;protected&gt;&quot;}&gt;, @_config=#&lt;OrderedHash {}&gt;, @_env={&quot;action_dispatch.request.formats&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.request.parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, &quot;rack.session&quot;=&gt;{}, &quot;HTTP_ACCEPT&quot;=&gt;&quot;*/*&quot;, &quot;HTTP_HOST&quot;=&gt;&quot;localhost:3000&quot;, &quot;SERVER_NAME&quot;=&gt;&quot;localhost&quot;, &quot;action_dispatch.remote_ip&quot;=&gt;#&lt;ActionDispatch::RemoteIp::RemoteIpGetter:0x10e4bb338 @env={...}, @trusted_proxies=/(^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.)/i, @check_ip_spoofing=true, @remote_addrs=[]&gt;, &quot;rack.url_scheme&quot;=&gt;&quot;http&quot;, &quot;REQUEST_PATH&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;CONTENT_LENGTH&quot;=&gt;&quot;37&quot;, &quot;action_dispatch.request.query_parameters&quot;=&gt;{}, &quot;action_dispatch.request.unsigned_session_cookie&quot;=&gt;{}, &quot;rack.errors&quot;=&gt;#&lt;IO:0x1094fcd10&gt;, &quot;CONTENT_TYPE&quot;=&gt;&quot;application/x-www-form-urlencoded&quot;, &quot;SERVER_PROTOCOL&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;hoptoad.error_id&quot;=&gt;nil, &quot;action_dispatch.request.accepts&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.secret_token&quot;=&gt;&quot;83967e16c1b5ea7b4d2ebe7e14135a9472ea4e95cef9becba105bc5887b9fd997f834e05ffd72d402b425e9c2a87ef70b56c5ae19c86c1e49bfb03462c074425&quot;, &quot;rack.version&quot;=&gt;[1, 1], &quot;rack.run_once&quot;=&gt;false, &quot;SERVER_SOFTWARE&quot;=&gt;&quot;Mongrel 1.1.5&quot;, &quot;PATH_INFO&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;REMOTE_ADDR&quot;=&gt;&quot;127.0.0.1&quot;, &quot;action_dispatch.request.path_parameters&quot;=&gt;{:action=&gt;&quot;show&quot;, :id=&gt;&quot;42&quot;, :controller=&gt;&quot;api/v1/candidates&quot;}, &quot;SCRIPT_NAME&quot;=&gt;&quot;&quot;, &quot;action_dispatch.parameter_filter&quot;=&gt;[:password], &quot;action_dispatch.show_exceptions&quot;=&gt;true, &quot;rack.multithread&quot;=&gt;false, &quot;HTTP_VERSION&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;action_dispatch.request.request_parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;rack.request.form_vars&quot;=&gt;&quot;user_credentials=Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action_dispatch.cookies&quot;=&gt;{}, &quot;rack.multiprocess&quot;=&gt;false, &quot;REQUEST_URI&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;rack.request.query_hash&quot;=&gt;{}, &quot;rack.request.form_input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;SERVER_PORT&quot;=&gt;&quot;3000&quot;, &quot;action_controller.instance&quot;=&gt;#&lt;Api::V1::CandidatesController:0x10e2a26c8 ...&gt;, &quot;rack.session.options&quot;=&gt;{:expire_after=&gt;nil, :httponly=&gt;true, :domain=&gt;nil, :path=&gt;&quot;/&quot;, :secure=&gt;false, :id=&gt;nil}, &quot;REQUEST_METHOD&quot;=&gt;&quot;GET&quot;, &quot;oauth2&quot;=&gt;#&lt;OAuth2::Provider::Rack::ResourceRequest:0x10e4aefc0 @env={...}&gt;, &quot;rack.request.query_string&quot;=&gt;&quot;&quot;, &quot;rack.request.form_hash&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;action_dispatch.request.content_type&quot;=&gt;#&lt;Mime::Type:0x108a2fe28 @symbol=:url_encoded_form, @synonyms=[], @string=&quot;application/x-www-form-urlencoded&quot;&gt;, &quot;QUERY_STRING&quot;=&gt;&quot;&quot;, &quot;rack.input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;GATEWAY_INTERFACE&quot;=&gt;&quot;CGI/1.2&quot;}, @_response=#&lt;ActionDispatch::Response:0x10e2a2538 @cookie=[], @cache_control={}, @body=[], @header={}, @writer=#&lt;Proc:0x0000000108d46878@/Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/gems/actionpack-3.0.9/lib/action_dispatch/http/response.rb:43&gt;, @block=nil, @blank=false, @status=200, @sending_file=false, @etag=nil, @length=0, @request=#&lt;ActionDispatch::Request:0x10e2a2600 @request_method=&quot;GET&quot;, @filtered_parameters={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @fullpath=&quot;/api/v1/candidates/42&quot;, @env={&quot;action_dispatch.request.formats&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.request.parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, &quot;rack.session&quot;=&gt;{}, &quot;HTTP_ACCEPT&quot;=&gt;&quot;*/*&quot;, &quot;HTTP_HOST&quot;=&gt;&quot;localhost:3000&quot;, &quot;SERVER_NAME&quot;=&gt;&quot;localhost&quot;, &quot;action_dispatch.remote_ip&quot;=&gt;#&lt;ActionDispatch::RemoteIp::RemoteIpGetter:0x10e4bb338 @env={...}, @trusted_proxies=/(^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.)/i, @check_ip_spoofing=true, @remote_addrs=[]&gt;, &quot;rack.url_scheme&quot;=&gt;&quot;http&quot;, &quot;REQUEST_PATH&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;CONTENT_LENGTH&quot;=&gt;&quot;37&quot;, &quot;action_dispatch.request.query_parameters&quot;=&gt;{}, &quot;action_dispatch.request.unsigned_session_cookie&quot;=&gt;{}, &quot;rack.errors&quot;=&gt;#&lt;IO:0x1094fcd10&gt;, &quot;CONTENT_TYPE&quot;=&gt;&quot;application/x-www-form-urlencoded&quot;, &quot;SERVER_PROTOCOL&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;hoptoad.error_id&quot;=&gt;nil, &quot;action_dispatch.request.accepts&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.secret_token&quot;=&gt;&quot;83967e16c1b5ea7b4d2ebe7e14135a9472ea4e95cef9becba105bc5887b9fd997f834e05ffd72d402b425e9c2a87ef70b56c5ae19c86c1e49bfb03462c074425&quot;, &quot;rack.version&quot;=&gt;[1, 1], &quot;rack.run_once&quot;=&gt;false, &quot;SERVER_SOFTWARE&quot;=&gt;&quot;Mongrel 1.1.5&quot;, &quot;PATH_INFO&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;REMOTE_ADDR&quot;=&gt;&quot;127.0.0.1&quot;, &quot;action_dispatch.request.path_parameters&quot;=&gt;{:action=&gt;&quot;show&quot;, :id=&gt;&quot;42&quot;, :controller=&gt;&quot;api/v1/candidates&quot;}, &quot;SCRIPT_NAME&quot;=&gt;&quot;&quot;, &quot;action_dispatch.parameter_filter&quot;=&gt;[:password], &quot;action_dispatch.show_exceptions&quot;=&gt;true, &quot;rack.multithread&quot;=&gt;false, &quot;HTTP_VERSION&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;action_dispatch.request.request_parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;rack.request.form_vars&quot;=&gt;&quot;user_credentials=Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action_dispatch.cookies&quot;=&gt;{}, &quot;rack.multiprocess&quot;=&gt;false, &quot;REQUEST_URI&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;rack.request.query_hash&quot;=&gt;{}, &quot;rack.request.form_input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;SERVER_PORT&quot;=&gt;&quot;3000&quot;, &quot;action_controller.instance&quot;=&gt;#&lt;Api::V1::CandidatesController:0x10e2a26c8 ...&gt;, &quot;rack.session.options&quot;=&gt;{:expire_after=&gt;nil, :httponly=&gt;true, :domain=&gt;nil, :path=&gt;&quot;/&quot;, :secure=&gt;false, :id=&gt;nil}, &quot;REQUEST_METHOD&quot;=&gt;&quot;GET&quot;, &quot;oauth2&quot;=&gt;#&lt;OAuth2::Provider::Rack::ResourceRequest:0x10e4aefc0 @env={...}&gt;, &quot;rack.request.query_string&quot;=&gt;&quot;&quot;, &quot;rack.request.form_hash&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;action_dispatch.request.content_type&quot;=&gt;#&lt;Mime::Type:0x108a2fe28 @symbol=:url_encoded_form, @synonyms=[], @string=&quot;application/x-www-form-urlencoded&quot;&gt;, &quot;QUERY_STRING&quot;=&gt;&quot;&quot;, &quot;rack.input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;GATEWAY_INTERFACE&quot;=&gt;&quot;CGI/1.2&quot;}, @method=&quot;GET&quot;&gt;&gt;, @lookup_context=#&lt;ActionView::LookupContext:0x10e2a21c8 @view_paths=[#&lt;ActionView::FileSystemResolver:0x10ad35d28 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10ad36ca0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/ssl_requirement/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10ad83910 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/serialized_attributes/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10adf8f30 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/haml/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af2a1b0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/formtastic/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af6ec70 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/caching_presenter/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af82c70 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/attribute_mapper/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10affa1d0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/alter_table/app/views&quot;, @cached={}&gt;], @details_key=nil, @details={:handlers=&gt;[:haml, :rhtml, :rjs, :rxml, :builder, :erb], :formats=&gt;[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=&gt;[:en, :en]}, @skip_default_locale=false, @frozen_formats=false&gt;, @_request=#&lt;ActionDispatch::Request:0x10e2a2600 @request_method=&quot;GET&quot;, @filtered_parameters={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @fullpath=&quot;/api/v1/candidates/42&quot;, @env={&quot;action_dispatch.request.formats&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.request.parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, &quot;rack.session&quot;=&gt;{}, &quot;HTTP_ACCEPT&quot;=&gt;&quot;*/*&quot;, &quot;HTTP_HOST&quot;=&gt;&quot;localhost:3000&quot;, &quot;SERVER_NAME&quot;=&gt;&quot;localhost&quot;, &quot;action_dispatch.remote_ip&quot;=&gt;#&lt;ActionDispatch::RemoteIp::RemoteIpGetter:0x10e4bb338 @env={...}, @trusted_proxies=/(^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.)/i, @check_ip_spoofing=true, @remote_addrs=[]&gt;, &quot;rack.url_scheme&quot;=&gt;&quot;http&quot;, &quot;REQUEST_PATH&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;CONTENT_LENGTH&quot;=&gt;&quot;37&quot;, &quot;action_dispatch.request.query_parameters&quot;=&gt;{}, &quot;action_dispatch.request.unsigned_session_cookie&quot;=&gt;{}, &quot;rack.errors&quot;=&gt;#&lt;IO:0x1094fcd10&gt;, &quot;CONTENT_TYPE&quot;=&gt;&quot;application/x-www-form-urlencoded&quot;, &quot;SERVER_PROTOCOL&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;hoptoad.error_id&quot;=&gt;nil, &quot;action_dispatch.request.accepts&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.secret_token&quot;=&gt;&quot;83967e16c1b5ea7b4d2ebe7e14135a9472ea4e95cef9becba105bc5887b9fd997f834e05ffd72d402b425e9c2a87ef70b56c5ae19c86c1e49bfb03462c074425&quot;, &quot;rack.version&quot;=&gt;[1, 1], &quot;rack.run_once&quot;=&gt;false, &quot;SERVER_SOFTWARE&quot;=&gt;&quot;Mongrel 1.1.5&quot;, &quot;PATH_INFO&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;REMOTE_ADDR&quot;=&gt;&quot;127.0.0.1&quot;, &quot;action_dispatch.request.path_parameters&quot;=&gt;{:action=&gt;&quot;show&quot;, :id=&gt;&quot;42&quot;, :controller=&gt;&quot;api/v1/candidates&quot;}, &quot;SCRIPT_NAME&quot;=&gt;&quot;&quot;, &quot;action_dispatch.parameter_filter&quot;=&gt;[:password], &quot;action_dispatch.show_exceptions&quot;=&gt;true, &quot;rack.multithread&quot;=&gt;false, &quot;HTTP_VERSION&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;action_dispatch.request.request_parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;rack.request.form_vars&quot;=&gt;&quot;user_credentials=Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action_dispatch.cookies&quot;=&gt;{}, &quot;rack.multiprocess&quot;=&gt;false, &quot;REQUEST_URI&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;rack.request.query_hash&quot;=&gt;{}, &quot;rack.request.form_input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;SERVER_PORT&quot;=&gt;&quot;3000&quot;, &quot;action_controller.instance&quot;=&gt;#&lt;Api::V1::CandidatesController:0x10e2a26c8 ...&gt;, &quot;rack.session.options&quot;=&gt;{:expire_after=&gt;nil, :httponly=&gt;true, :domain=&gt;nil, :path=&gt;&quot;/&quot;, :secure=&gt;false, :id=&gt;nil}, &quot;REQUEST_METHOD&quot;=&gt;&quot;GET&quot;, &quot;oauth2&quot;=&gt;#&lt;OAuth2::Provider::Rack::ResourceRequest:0x10e4aefc0 @env={...}&gt;, &quot;rack.request.query_string&quot;=&gt;&quot;&quot;, &quot;rack.request.form_hash&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;action_dispatch.request.content_type&quot;=&gt;#&lt;Mime::Type:0x108a2fe28 @symbol=:url_encoded_form, @synonyms=[], @string=&quot;application/x-www-form-urlencoded&quot;&gt;, &quot;QUERY_STRING&quot;=&gt;&quot;&quot;, &quot;rack.input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;GATEWAY_INTERFACE&quot;=&gt;&quot;CGI/1.2&quot;}, @method=&quot;GET&quot;&gt;, @_params={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @_response_body=nil, @view_context_class=nil, @action_has_layout=true, @_status=200, @current_user=#&lt;User id: 1, created_at: &quot;2011-08-29 18:18:18&quot;, updated_at: &quot;2011-08-29 18:19:00&quot;, email: &quot;staff@recruitmilitary.com&quot;, crypted_password: &quot;0c2e2255b213959ab77da74dd2a427681990dafefb999048f4f...&quot;, password_salt: &quot;BUuHfUgauBblH5J5aghi&quot;, persistence_token: &quot;ea6022d6e567f73727b2e80a0cae54b97c21031ee8232fa9162...&quot;, login_count: 0, last_request_at: &quot;2011-08-29 18:19:00&quot;, last_login_at: nil, current_login_at: nil, last_login_ip: nil, current_login_ip: nil, first_name: &quot;Staff&quot;, last_name: &quot;McStafforson&quot;, phone: nil, unsubscribed_at: nil, searchable: false, perishable_token: &quot;VvcG_hApZlllgs6G531w&quot;, secret_id: &quot;8997cf28a075ac67ac4372eda8fefc39&quot;, single_access_token: &quot;Bdrc3t1LaiWtygbJ4jD6&quot;, email_md5: &quot;3e67fa7c8045d085e66a51deee26cbc4&quot;, hidden_at: nil, primary_role_id: 3, email_invalid_at: nil, agreement_acknowledged_at: nil, agreement_initials: nil, confirmed_at: &quot;2011-08-29 18:18:18&quot;&gt;&gt;
297
+ action_dispatch.cookies: {}
298
+ action_dispatch.parameter_filter: [:password]
299
+ action_dispatch.remote_ip: #&lt;ActionDispatch::RemoteIp::RemoteIpGetter:0x10e4bb338 @env={&quot;action_dispatch.request.formats&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.request.parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, &quot;rack.session&quot;=&gt;{}, &quot;HTTP_ACCEPT&quot;=&gt;&quot;*/*&quot;, &quot;HTTP_HOST&quot;=&gt;&quot;localhost:3000&quot;, &quot;SERVER_NAME&quot;=&gt;&quot;localhost&quot;, &quot;action_dispatch.remote_ip&quot;=&gt;#&lt;ActionDispatch::RemoteIp::RemoteIpGetter:0x10e4bb338 ...&gt;, &quot;rack.url_scheme&quot;=&gt;&quot;http&quot;, &quot;REQUEST_PATH&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;CONTENT_LENGTH&quot;=&gt;&quot;37&quot;, &quot;action_dispatch.request.query_parameters&quot;=&gt;{}, &quot;action_dispatch.request.unsigned_session_cookie&quot;=&gt;{}, &quot;rack.errors&quot;=&gt;#&lt;IO:0x1094fcd10&gt;, &quot;CONTENT_TYPE&quot;=&gt;&quot;application/x-www-form-urlencoded&quot;, &quot;SERVER_PROTOCOL&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;hoptoad.error_id&quot;=&gt;nil, &quot;action_dispatch.request.accepts&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.secret_token&quot;=&gt;&quot;83967e16c1b5ea7b4d2ebe7e14135a9472ea4e95cef9becba105bc5887b9fd997f834e05ffd72d402b425e9c2a87ef70b56c5ae19c86c1e49bfb03462c074425&quot;, &quot;rack.version&quot;=&gt;[1, 1], &quot;rack.run_once&quot;=&gt;false, &quot;SERVER_SOFTWARE&quot;=&gt;&quot;Mongrel 1.1.5&quot;, &quot;PATH_INFO&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;REMOTE_ADDR&quot;=&gt;&quot;127.0.0.1&quot;, &quot;action_dispatch.request.path_parameters&quot;=&gt;{:action=&gt;&quot;show&quot;, :id=&gt;&quot;42&quot;, :controller=&gt;&quot;api/v1/candidates&quot;}, &quot;SCRIPT_NAME&quot;=&gt;&quot;&quot;, &quot;action_dispatch.parameter_filter&quot;=&gt;[:password], &quot;action_dispatch.show_exceptions&quot;=&gt;true, &quot;rack.multithread&quot;=&gt;false, &quot;HTTP_VERSION&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;action_dispatch.request.request_parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;rack.request.form_vars&quot;=&gt;&quot;user_credentials=Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action_dispatch.cookies&quot;=&gt;{}, &quot;rack.multiprocess&quot;=&gt;false, &quot;REQUEST_URI&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;rack.request.query_hash&quot;=&gt;{}, &quot;rack.request.form_input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;SERVER_PORT&quot;=&gt;&quot;3000&quot;, &quot;action_controller.instance&quot;=&gt;#&lt;Api::V1::CandidatesController:0x10e2a26c8 @_action_name=&quot;show&quot;, @_headers={&quot;Content-Type&quot;=&gt;&quot;text/html&quot;}, @current_user_session=#&lt;UserSession: {:unauthorized_record=&gt;&quot;&lt;protected&gt;&quot;}&gt;, @_config=#&lt;OrderedHash {}&gt;, @_env={...}, @_response=#&lt;ActionDispatch::Response:0x10e2a2538 @cookie=[], @cache_control={}, @body=[], @header={}, @writer=#&lt;Proc:0x0000000108d46878@/Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/gems/actionpack-3.0.9/lib/action_dispatch/http/response.rb:43&gt;, @block=nil, @blank=false, @status=200, @sending_file=false, @etag=nil, @length=0, @request=#&lt;ActionDispatch::Request:0x10e2a2600 @request_method=&quot;GET&quot;, @filtered_parameters={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @fullpath=&quot;/api/v1/candidates/42&quot;, @env={...}, @method=&quot;GET&quot;&gt;&gt;, @lookup_context=#&lt;ActionView::LookupContext:0x10e2a21c8 @view_paths=[#&lt;ActionView::FileSystemResolver:0x10ad35d28 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10ad36ca0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/ssl_requirement/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10ad83910 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/serialized_attributes/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10adf8f30 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/haml/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af2a1b0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/formtastic/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af6ec70 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/caching_presenter/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af82c70 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/attribute_mapper/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10affa1d0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/alter_table/app/views&quot;, @cached={}&gt;], @details_key=nil, @details={:handlers=&gt;[:haml, :rhtml, :rjs, :rxml, :builder, :erb], :formats=&gt;[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=&gt;[:en, :en]}, @skip_default_locale=false, @frozen_formats=false&gt;, @_request=#&lt;ActionDispatch::Request:0x10e2a2600 @request_method=&quot;GET&quot;, @filtered_parameters={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @fullpath=&quot;/api/v1/candidates/42&quot;, @env={...}, @method=&quot;GET&quot;&gt;, @_params={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @_response_body=nil, @view_context_class=nil, @action_has_layout=true, @_status=200, @current_user=#&lt;User id: 1, created_at: &quot;2011-08-29 18:18:18&quot;, updated_at: &quot;2011-08-29 18:19:00&quot;, email: &quot;staff@recruitmilitary.com&quot;, crypted_password: &quot;0c2e2255b213959ab77da74dd2a427681990dafefb999048f4f...&quot;, password_salt: &quot;BUuHfUgauBblH5J5aghi&quot;, persistence_token: &quot;ea6022d6e567f73727b2e80a0cae54b97c21031ee8232fa9162...&quot;, login_count: 0, last_request_at: &quot;2011-08-29 18:19:00&quot;, last_login_at: nil, current_login_at: nil, last_login_ip: nil, current_login_ip: nil, first_name: &quot;Staff&quot;, last_name: &quot;McStafforson&quot;, phone: nil, unsubscribed_at: nil, searchable: false, perishable_token: &quot;VvcG_hApZlllgs6G531w&quot;, secret_id: &quot;8997cf28a075ac67ac4372eda8fefc39&quot;, single_access_token: &quot;Bdrc3t1LaiWtygbJ4jD6&quot;, email_md5: &quot;3e67fa7c8045d085e66a51deee26cbc4&quot;, hidden_at: nil, primary_role_id: 3, email_invalid_at: nil, agreement_acknowledged_at: nil, agreement_initials: nil, confirmed_at: &quot;2011-08-29 18:18:18&quot;&gt;&gt;, &quot;rack.session.options&quot;=&gt;{:expire_after=&gt;nil, :httponly=&gt;true, :domain=&gt;nil, :path=&gt;&quot;/&quot;, :secure=&gt;false, :id=&gt;nil}, &quot;REQUEST_METHOD&quot;=&gt;&quot;GET&quot;, &quot;oauth2&quot;=&gt;#&lt;OAuth2::Provider::Rack::ResourceRequest:0x10e4aefc0 @env={...}&gt;, &quot;rack.request.query_string&quot;=&gt;&quot;&quot;, &quot;rack.request.form_hash&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;action_dispatch.request.content_type&quot;=&gt;#&lt;Mime::Type:0x108a2fe28 @symbol=:url_encoded_form, @synonyms=[], @string=&quot;application/x-www-form-urlencoded&quot;&gt;, &quot;QUERY_STRING&quot;=&gt;&quot;&quot;, &quot;rack.input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;GATEWAY_INTERFACE&quot;=&gt;&quot;CGI/1.2&quot;}, @trusted_proxies=/(^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.)/i, @check_ip_spoofing=true, @remote_addrs=[]&gt;
300
+ action_dispatch.request.accepts: [#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;]
301
+ action_dispatch.request.content_type: #&lt;Mime::Type:0x108a2fe28 @symbol=:url_encoded_form, @synonyms=[], @string=&quot;application/x-www-form-urlencoded&quot;&gt;
302
+ action_dispatch.request.formats: [#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;]
303
+ action_dispatch.request.parameters: {&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}
304
+ action_dispatch.request.path_parameters: {:action=&gt;&quot;show&quot;, :id=&gt;&quot;42&quot;, :controller=&gt;&quot;api/v1/candidates&quot;}
305
+ action_dispatch.request.query_parameters: {}
306
+ action_dispatch.request.request_parameters: {&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}
307
+ action_dispatch.request.unsigned_session_cookie: {}
308
+ action_dispatch.secret_token: &quot;83967e16c1b5ea7b4d2ebe7e14135a9472ea4e95cef9becba105bc5887b9fd997f834e05ffd72d402b425e9c2a87ef70b56c5ae19c86c1e49bfb03462c074425&quot;
309
+ action_dispatch.show_exceptions: true
310
+ hoptoad.error_id: nil
311
+ oauth2: #&lt;OAuth2::Provider::Rack::ResourceRequest:0x10e4aefc0 @env={&quot;action_dispatch.request.formats&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.request.parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, &quot;rack.session&quot;=&gt;{}, &quot;HTTP_ACCEPT&quot;=&gt;&quot;*/*&quot;, &quot;HTTP_HOST&quot;=&gt;&quot;localhost:3000&quot;, &quot;SERVER_NAME&quot;=&gt;&quot;localhost&quot;, &quot;action_dispatch.remote_ip&quot;=&gt;#&lt;ActionDispatch::RemoteIp::RemoteIpGetter:0x10e4bb338 @env={...}, @trusted_proxies=/(^127\.0\.0\.1$|^(10|172\.(1[6-9]|2[0-9]|30|31)|192\.168)\.)/i, @check_ip_spoofing=true, @remote_addrs=[]&gt;, &quot;rack.url_scheme&quot;=&gt;&quot;http&quot;, &quot;REQUEST_PATH&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;CONTENT_LENGTH&quot;=&gt;&quot;37&quot;, &quot;action_dispatch.request.query_parameters&quot;=&gt;{}, &quot;action_dispatch.request.unsigned_session_cookie&quot;=&gt;{}, &quot;rack.errors&quot;=&gt;#&lt;IO:0x1094fcd10&gt;, &quot;CONTENT_TYPE&quot;=&gt;&quot;application/x-www-form-urlencoded&quot;, &quot;SERVER_PROTOCOL&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;hoptoad.error_id&quot;=&gt;nil, &quot;action_dispatch.request.accepts&quot;=&gt;[#&lt;Mime::Type:0x10b13b710 @symbol=nil, @synonyms=[], @string=&quot;*/*&quot;&gt;], &quot;action_dispatch.secret_token&quot;=&gt;&quot;83967e16c1b5ea7b4d2ebe7e14135a9472ea4e95cef9becba105bc5887b9fd997f834e05ffd72d402b425e9c2a87ef70b56c5ae19c86c1e49bfb03462c074425&quot;, &quot;rack.version&quot;=&gt;[1, 1], &quot;rack.run_once&quot;=&gt;false, &quot;SERVER_SOFTWARE&quot;=&gt;&quot;Mongrel 1.1.5&quot;, &quot;PATH_INFO&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;REMOTE_ADDR&quot;=&gt;&quot;127.0.0.1&quot;, &quot;action_dispatch.request.path_parameters&quot;=&gt;{:action=&gt;&quot;show&quot;, :id=&gt;&quot;42&quot;, :controller=&gt;&quot;api/v1/candidates&quot;}, &quot;SCRIPT_NAME&quot;=&gt;&quot;&quot;, &quot;action_dispatch.parameter_filter&quot;=&gt;[:password], &quot;action_dispatch.show_exceptions&quot;=&gt;true, &quot;rack.multithread&quot;=&gt;false, &quot;HTTP_VERSION&quot;=&gt;&quot;HTTP/1.1&quot;, &quot;action_dispatch.request.request_parameters&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;rack.request.form_vars&quot;=&gt;&quot;user_credentials=Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action_dispatch.cookies&quot;=&gt;{}, &quot;rack.multiprocess&quot;=&gt;false, &quot;REQUEST_URI&quot;=&gt;&quot;/api/v1/candidates/42&quot;, &quot;rack.request.query_hash&quot;=&gt;{}, &quot;rack.request.form_input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;SERVER_PORT&quot;=&gt;&quot;3000&quot;, &quot;action_controller.instance&quot;=&gt;#&lt;Api::V1::CandidatesController:0x10e2a26c8 @_action_name=&quot;show&quot;, @_headers={&quot;Content-Type&quot;=&gt;&quot;text/html&quot;}, @current_user_session=#&lt;UserSession: {:unauthorized_record=&gt;&quot;&lt;protected&gt;&quot;}&gt;, @_config=#&lt;OrderedHash {}&gt;, @_env={...}, @_response=#&lt;ActionDispatch::Response:0x10e2a2538 @cookie=[], @cache_control={}, @body=[], @header={}, @writer=#&lt;Proc:0x0000000108d46878@/Users/michaelguterl/.rvm/gems/ree-1.8.7-2011.03@rm-board/gems/actionpack-3.0.9/lib/action_dispatch/http/response.rb:43&gt;, @block=nil, @blank=false, @status=200, @sending_file=false, @etag=nil, @length=0, @request=#&lt;ActionDispatch::Request:0x10e2a2600 @request_method=&quot;GET&quot;, @filtered_parameters={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @fullpath=&quot;/api/v1/candidates/42&quot;, @env={...}, @method=&quot;GET&quot;&gt;&gt;, @lookup_context=#&lt;ActionView::LookupContext:0x10e2a21c8 @view_paths=[#&lt;ActionView::FileSystemResolver:0x10ad35d28 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10ad36ca0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/ssl_requirement/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10ad83910 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/serialized_attributes/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10adf8f30 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/haml/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af2a1b0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/formtastic/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af6ec70 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/caching_presenter/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10af82c70 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/attribute_mapper/app/views&quot;, @cached={}&gt;, #&lt;ActionView::FileSystemResolver:0x10affa1d0 @caching=false, @path=&quot;/Users/michaelguterl/code/rm/board/vendor/plugins/alter_table/app/views&quot;, @cached={}&gt;], @details_key=nil, @details={:handlers=&gt;[:haml, :rhtml, :rjs, :rxml, :builder, :erb], :formats=&gt;[:html, :text, :js, :css, :ics, :csv, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json], :locale=&gt;[:en, :en]}, @skip_default_locale=false, @frozen_formats=false&gt;, @_request=#&lt;ActionDispatch::Request:0x10e2a2600 @request_method=&quot;GET&quot;, @filtered_parameters={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @fullpath=&quot;/api/v1/candidates/42&quot;, @env={...}, @method=&quot;GET&quot;&gt;, @_params={&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;, &quot;action&quot;=&gt;&quot;show&quot;, &quot;id&quot;=&gt;&quot;42&quot;, &quot;controller&quot;=&gt;&quot;api/v1/candidates&quot;}, @_response_body=nil, @view_context_class=nil, @action_has_layout=true, @_status=200, @current_user=#&lt;User id: 1, created_at: &quot;2011-08-29 18:18:18&quot;, updated_at: &quot;2011-08-29 18:19:00&quot;, email: &quot;staff@recruitmilitary.com&quot;, crypted_password: &quot;0c2e2255b213959ab77da74dd2a427681990dafefb999048f4f...&quot;, password_salt: &quot;BUuHfUgauBblH5J5aghi&quot;, persistence_token: &quot;ea6022d6e567f73727b2e80a0cae54b97c21031ee8232fa9162...&quot;, login_count: 0, last_request_at: &quot;2011-08-29 18:19:00&quot;, last_login_at: nil, current_login_at: nil, last_login_ip: nil, current_login_ip: nil, first_name: &quot;Staff&quot;, last_name: &quot;McStafforson&quot;, phone: nil, unsubscribed_at: nil, searchable: false, perishable_token: &quot;VvcG_hApZlllgs6G531w&quot;, secret_id: &quot;8997cf28a075ac67ac4372eda8fefc39&quot;, single_access_token: &quot;Bdrc3t1LaiWtygbJ4jD6&quot;, email_md5: &quot;3e67fa7c8045d085e66a51deee26cbc4&quot;, hidden_at: nil, primary_role_id: 3, email_invalid_at: nil, agreement_acknowledged_at: nil, agreement_initials: nil, confirmed_at: &quot;2011-08-29 18:18:18&quot;&gt;&gt;, &quot;rack.session.options&quot;=&gt;{:expire_after=&gt;nil, :httponly=&gt;true, :domain=&gt;nil, :path=&gt;&quot;/&quot;, :secure=&gt;false, :id=&gt;nil}, &quot;REQUEST_METHOD&quot;=&gt;&quot;GET&quot;, &quot;oauth2&quot;=&gt;#&lt;OAuth2::Provider::Rack::ResourceRequest:0x10e4aefc0 ...&gt;, &quot;rack.request.query_string&quot;=&gt;&quot;&quot;, &quot;rack.request.form_hash&quot;=&gt;{&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}, &quot;action_dispatch.request.content_type&quot;=&gt;#&lt;Mime::Type:0x108a2fe28 @symbol=:url_encoded_form, @synonyms=[], @string=&quot;application/x-www-form-urlencoded&quot;&gt;, &quot;QUERY_STRING&quot;=&gt;&quot;&quot;, &quot;rack.input&quot;=&gt;#&lt;StringIO:0x10e4bc9b8&gt;, &quot;GATEWAY_INTERFACE&quot;=&gt;&quot;CGI/1.2&quot;}&gt;
312
+ rack.errors: #&lt;IO:0x1094fcd10&gt;
313
+ rack.input: #&lt;StringIO:0x10e4bc9b8&gt;
314
+ rack.multiprocess: false
315
+ rack.multithread: false
316
+ rack.request.form_hash: {&quot;user_credentials&quot;=&gt;&quot;Bdrc3t1LaiWtygbJ4jD6&quot;}
317
+ rack.request.form_input: #&lt;StringIO:0x10e4bc9b8&gt;
318
+ rack.request.form_vars: &quot;user_credentials=Bdrc3t1LaiWtygbJ4jD6&quot;
319
+ rack.request.query_hash: {}
320
+ rack.request.query_string: &quot;&quot;
321
+ rack.run_once: false
322
+ rack.session: {}
323
+ rack.session.options: {:expire_after=&gt;nil, :httponly=&gt;true, :domain=&gt;nil, :path=&gt;&quot;/&quot;, :secure=&gt;false, :id=&gt;nil}
324
+ rack.url_scheme: &quot;http&quot;
325
+ rack.version: [1, 1]</pre></div>
326
+
327
+
328
+ <h2 style="margin-top: 30px">Response</h2>
329
+ <p><b>Headers</b>: <pre>None</pre></p>
330
+
331
+
332
+
333
+ </body>
334
+ </html>
335
+
336
+ http_version: "1.1"