dossier 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. data/README.markdown +28 -3
  2. data/app/views/dossier/reports/show.html.haml +1 -1
  3. data/config/routes.rb +1 -1
  4. data/lib/dossier/query.rb +1 -1
  5. data/lib/dossier/report.rb +4 -0
  6. data/lib/dossier/version.rb +1 -1
  7. data/lib/generators/dossier/views/templates/show.html.haml +21 -0
  8. data/lib/generators/dossier/views/views_generator.rb +12 -0
  9. data/spec/dossier/query_spec.rb +46 -27
  10. data/spec/dossier/report_spec.rb +19 -0
  11. data/spec/dummy/config/database.yml +1 -1
  12. data/spec/dummy/db/test.sqlite3 +0 -0
  13. data/spec/dummy/log/development.log +508 -28
  14. data/spec/dummy/log/test.log +879 -26190
  15. data/spec/dummy/tmp/cache/assets/C35/BF0/sprockets%2F64292e0008108df585a755f2876c7869 +0 -0
  16. data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  17. data/spec/dummy/tmp/cache/assets/D00/EF0/sprockets%2F4e1e8b85785ee1929c8e355c96902e9c +0 -0
  18. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  19. data/spec/dummy/tmp/cache/assets/D45/6A0/sprockets%2F22f3562bf7d5e640880df2a5d683f2fc +0 -0
  20. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  21. data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  22. data/spec/dummy/tmp/cache/assets/DCF/420/sprockets%2F9f127ea0ab7236994d1ceaa7bbea86c8 +0 -0
  23. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  24. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  25. data/spec/fixtures/db/mysql2.yml +2 -2
  26. data/spec/generators/dossier/views/views_spec.rb +25 -0
  27. data/spec/spec_helper.rb +1 -0
  28. data/spec/support/factory.rb +2 -2
  29. metadata +55 -15
data/README.markdown CHANGED
@@ -5,7 +5,7 @@ Dossier is a Rails engine that turns SQL into reports. Reports can be easily ren
5
5
  - If you **hate** SQL, you can use whatever tool you like to generate it; for example, ActiveRecord's `to_sql`.
6
6
  - If you **love** SQL, you can use every feature your database supports.
7
7
 
8
- [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/adamhunter/dossier)
8
+ [![Code Climate](https://codeclimate.com/github/adamhunter/dossier.png)](https://codeclimate.com/github/adamhunter/dossier)
9
9
 
10
10
  ## Setup
11
11
 
@@ -47,7 +47,7 @@ class FancyKetchupReport < Dossier::Report
47
47
  end
48
48
  ```
49
49
 
50
- If you need dynamic values that may be influenced by the user, **[do not interpolate them directly](http://xkcd.com/327/)**. Dossier provides a safer way to add them: any symbols in the query will be replaced by calling methods of the same name in the report. Return values will be **escaped by the database connection**. Arrays will have all of their contents escaped, joined with a "," and wrapped in parentheses.
50
+ If you need dynamic values that may be influenced by the user, **[do not interpolate them directly](http://xkcd.com/327/)**. Dossier provides a safer way to add them: any lowercase symbols in the query will be replaced by calling methods of the same name in the report. Return values will be **escaped by the database connection**. Arrays will have all of their contents escaped, joined with a "," and wrapped in parentheses.
51
51
 
52
52
  ```ruby
53
53
  # app/reports/fancy_ketchup_report.rb
@@ -67,6 +67,22 @@ class FancyKetchupReport < Dossier::Report
67
67
  end
68
68
  ```
69
69
 
70
+ ## Header Formatting
71
+
72
+ By default, headers are generated by calling `titleize` on the column name from the result set. To override this, define a `format_header` method in your report that returns what you want. For example:
73
+
74
+ ```ruby
75
+ class ProductMarginReport < Dossier::Report
76
+ # ...
77
+ def format_header(column_name)
78
+ {
79
+ 'margin_percentage' => 'Margin %',
80
+ 'absolute_margin' => 'Margin $'
81
+ }[column_name.to_s] || super
82
+ end
83
+ end
84
+ ```
85
+
70
86
  ## Column Formatting
71
87
 
72
88
  You can format any values in your results by defining a `format_` method for that column on your report class. For instance, to reverse the names of your employees:
@@ -141,7 +157,16 @@ However, Dossier does support one URL parameter natively: if you supply a `foote
141
157
 
142
158
  ## Additional View Customization
143
159
 
144
- To further customize your results view, provide your own `app/views/dossier/reports/show`.
160
+ To further customize your results view, run the the generator provided. The default will provide 'app/views/dossier/reports/show'.
161
+
162
+ ```ruby
163
+ rails generate dossier:views
164
+ ```
165
+ You may pass a filename as an argument. This example creates 'app/views/dossier/reports/account_tracker.html.haml'.
166
+
167
+ ```ruby
168
+ rails generate dossier:views account_tracker
169
+ ```
145
170
 
146
171
  ## Callbacks
147
172
 
@@ -6,7 +6,7 @@
6
6
  %thead
7
7
  %tr
8
8
  - report.results.headers.each do |header|
9
- %th= Dossier::Formatter.titleize(header)
9
+ %th= report.format_header(header)
10
10
  %tbody
11
11
  - report.results.body.each do |row|
12
12
  %tr
data/config/routes.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  Rails.application.routes.draw do
2
2
 
3
- match "reports/:report", :to => 'dossier/reports#show', :as => :dossier_report
3
+ match "reports/:report", :to => 'dossier/reports#show', :as => :dossier_report, via: :get
4
4
 
5
5
  end
data/lib/dossier/query.rb CHANGED
@@ -15,7 +15,7 @@ module Dossier
15
15
  private
16
16
 
17
17
  def compile
18
- string.gsub(/\w*\:\w+/) { |match| escape(report.public_send(match[1..-1])) }
18
+ string.gsub(/\w*\:[a-z]+/) { |match| escape(report.public_send(match[1..-1])) }
19
19
  end
20
20
 
21
21
  def escape(value)
@@ -42,6 +42,10 @@ module Dossier
42
42
  Dossier::Formatter
43
43
  end
44
44
 
45
+ def format_header(header)
46
+ formatter.titleize(header.to_s)
47
+ end
48
+
45
49
  def dossier_client
46
50
  Dossier.client
47
51
  end
@@ -1,3 +1,3 @@
1
1
  module Dossier
2
- VERSION = "2.4.0"
2
+ VERSION = "2.5.0"
3
3
  end
@@ -0,0 +1,21 @@
1
+ %h1= report.class.name.titleize
2
+
3
+ = link_to 'Download CSV', dossier_report_path(format: 'csv', options: report.options, report: report.class.report_name), class: 'download-csv'
4
+
5
+ %table
6
+ %thead
7
+ %tr
8
+ - report.results.headers.each do |header|
9
+ %th= Dossier::Formatter.titleize(header)
10
+ %tbody
11
+ - report.results.body.each do |row|
12
+ %tr
13
+ - row.each do |value|
14
+ %td= value
15
+
16
+ - if report.results.footers.any?
17
+ %tfoot
18
+ - report.results.footers.each do |row|
19
+ %tr
20
+ - row.each do |value|
21
+ %th= value
@@ -0,0 +1,12 @@
1
+ module Dossier
2
+ class ViewsGenerator < Rails::Generators::Base
3
+ desc "This generator creates report views"
4
+ source_root File.expand_path('../templates', __FILE__)
5
+ argument :report_name, type: :string, default: "show"
6
+
7
+ def generate_view
8
+ template "show.html.haml", Rails.root.join("app/" "views/" "dossier/reports/#{report_name}.html.haml")
9
+ end
10
+
11
+ end
12
+ end
@@ -12,48 +12,67 @@ describe Dossier::Query do
12
12
 
13
13
  describe "replacing symbols by calling methods of the same name" do
14
14
 
15
- context "when the methods return single values" do
15
+ context "when it's a normal symbol match" do
16
16
 
17
- before :each do
18
- report.stub(:sql).and_return("SELECT * FROM employees WHERE id = :id OR girth < :girth OR name = :name")
19
- report.stub(:id).and_return(92)
20
- report.stub(:girth).and_return(3.14)
21
- report.stub(:name).and_return('Jimmy')
22
- end
17
+ context "when the methods return single values" do
23
18
 
24
- it "escapes the values" do
25
- query.should_receive(:escape).with(92)
26
- query.should_receive(:escape).with(3.14)
27
- query.should_receive(:escape).with('Jimmy')
28
- query.to_s
29
- end
19
+ before :each do
20
+ report.stub(:sql).and_return("SELECT * FROM employees WHERE id = :id OR girth < :girth OR name = :name")
21
+ report.stub(:id).and_return(92)
22
+ report.stub(:girth).and_return(3.14)
23
+ report.stub(:name).and_return('Jimmy')
24
+ end
25
+
26
+ it "escapes the values" do
27
+ query.should_receive(:escape).with(92)
28
+ query.should_receive(:escape).with(3.14)
29
+ query.should_receive(:escape).with('Jimmy')
30
+ query.to_s
31
+ end
32
+
33
+ it "inserts the values" do
34
+ expect(query.to_s).to eq("SELECT * FROM employees WHERE id = 92 OR girth < 3.14 OR name = 'Jimmy'")
35
+ end
30
36
 
31
- it "inserts the values" do
32
- expect(query.to_s).to eq("SELECT * FROM employees WHERE id = 92 OR girth < 3.14 OR name = 'Jimmy'")
33
37
  end
34
38
 
35
- end
39
+ context "when the methods return arrays" do
36
40
 
37
- context "when the methods return arrays" do
41
+ before :each do
42
+ report.stub(:sql).and_return("SELECT * FROM employees WHERE stuff IN :stuff")
43
+ report.stub(:stuff).and_return([38, 'blue', 'mandible', 2])
44
+ end
38
45
 
39
- before :each do
40
- report.stub(:sql).and_return("SELECT * FROM employees WHERE stuff IN :stuff")
41
- report.stub(:stuff).and_return([38, 'blue', 'mandible', 2])
46
+ it "escapes each value in the array" do
47
+ Dossier.client.should_receive(:escape).with(38)
48
+ Dossier.client.should_receive(:escape).with('blue')
49
+ Dossier.client.should_receive(:escape).with('mandible')
50
+ Dossier.client.should_receive(:escape).with(2)
51
+ query.to_s
52
+ end
53
+
54
+ it "joins the return values with commas" do
55
+ expect(query.to_s).to eq("SELECT * FROM employees WHERE stuff IN (38, 'blue', 'mandible', 2)")
56
+ end
42
57
  end
58
+ end
59
+
60
+ context "when it's another string that includes :" do
43
61
 
44
- it "escapes each value in the array" do
45
- Dossier.client.should_receive(:escape).with(38)
46
- Dossier.client.should_receive(:escape).with('blue')
47
- Dossier.client.should_receive(:escape).with('mandible')
48
- Dossier.client.should_receive(:escape).with(2)
62
+ it "does not escape a namespaced constant" do
63
+ report.stub(:sql).and_return("SELECT * FROM employees WHERE type = 'Foo::Bar'")
64
+ query.should_not_receive(:Bar)
49
65
  query.to_s
50
66
  end
51
67
 
52
- it "joins the return values with commas" do
53
- expect(query.to_s).to eq("SELECT * FROM employees WHERE stuff IN (38, 'blue', 'mandible', 2)")
68
+ it "does not escape a top-level constant" do
69
+ report.stub(:sql).and_return("SELECT * FROM employees WHERE type = '::Foo'")
70
+ query.should_not_receive(:Foo)
71
+ query.to_s
54
72
  end
55
73
 
56
74
  end
57
75
 
58
76
  end
77
+
59
78
  end
@@ -9,10 +9,29 @@ describe Dossier::Report do
9
9
  end
10
10
 
11
11
  describe "report instances" do
12
+ let(:report_with_custom_header) do
13
+ Class.new(Dossier::Report) do
14
+ def format_header(header)
15
+ {
16
+ 'generic' => 'customized'
17
+ }[header.to_s] || super
18
+ end
19
+ end.new
20
+ end
21
+
12
22
  it "takes options when initializing" do
13
23
  report = TestReport.new(:foo => 'bar')
14
24
  report.options.should eq('foo' => 'bar')
15
25
  end
26
+
27
+ it 'generates column headers' do
28
+ report = TestReport.new(:foo => 'bar')
29
+ report.format_header('Foo').should eq 'Foo'
30
+ end
31
+
32
+ it 'allows for column header customization' do
33
+ report_with_custom_header.format_header(:generic).should eq 'customized'
34
+ end
16
35
  end
17
36
 
18
37
  describe "callbacks" do
@@ -3,7 +3,7 @@ defaults: &defaults
3
3
  database: dossier_test
4
4
  host: localhost
5
5
  username: root
6
- password: yePassworde
6
+ password: rubyr3d!
7
7
 
8
8
  development:
9
9
  <<: *defaults
Binary file
@@ -1,33 +1,513 @@
1
1
  Connecting to database specified by database.yml
2
-  (45.0ms) CREATE TABLE `employees` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY, `name` varchar(255), `hired_on` date, `suspended` tinyint(1)) ENGINE=InnoDB
3
-  (217.3ms) CREATE TABLE `schema_migrations` (`version` varchar(255) NOT NULL) ENGINE=InnoDB
4
-  (141.9ms) CREATE UNIQUE INDEX `unique_schema_migrations` ON `schema_migrations` (`version`)
5
-  (0.2ms) SELECT version FROM `schema_migrations`
6
-  (0.3ms) INSERT INTO `schema_migrations` (version) VALUES ('20130110141950')
7
2
  Connecting to database specified by database.yml
8
3
  Connecting to database specified by database.yml
9
- Connecting to database specified by database.yml
10
-  (1.5ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` 
11
- Migrating to CreateEmployees (20130110141950)
12
- Migrating to AddDivisionToEmployees (20130110221932)
13
-  (109.6ms) ALTER TABLE `employees` ADD `division` varchar(255)
14
-  (0.5ms) INSERT INTO `schema_migrations` (`version`) VALUES ('20130110221932')
15
-  (0.2ms) SELECT `schema_migrations`.`version` FROM `schema_migrations`
16
- Connecting to database specified by database.yml
17
-  (1.7ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` 
18
-  (0.3ms) SELECT `schema_migrations`.`version` FROM `schema_migrations`
19
- Migrating to AddDivisionToEmployees (20130110221932)
20
-  (85.8ms) ALTER TABLE `employees` DROP `division`
21
-  (0.6ms) DELETE FROM `schema_migrations` WHERE `schema_migrations`.`version` = '20130110221932'
22
-  (0.1ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` 
23
- Connecting to database specified by database.yml
24
-  (1.6ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` 
25
- Migrating to CreateEmployees (20130110141950)
26
- Migrating to AddDivisionToEmployees (20130110221932)
27
-  (50.1ms) ALTER TABLE `employees` ADD `division` varchar(255)
28
-  (238.4ms) ALTER TABLE `employees` ADD `salary` int(11)
29
-  (0.4ms) INSERT INTO `schema_migrations` (`version`) VALUES ('20130110221932')
30
-  (0.3ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` 
31
- Connecting to database specified by database.yml
4
+
5
+
6
+ Started GET "/" for 127.0.0.1 at 2013-02-05 09:02:51 -0500
7
+
8
+ ActionController::RoutingError (No route matches [GET] "/"):
9
+ actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
10
+ actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
11
+ railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
12
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
13
+ activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
14
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
15
+ actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
16
+ rack (1.4.4) lib/rack/methodoverride.rb:21:in `call'
17
+ rack (1.4.4) lib/rack/runtime.rb:17:in `call'
18
+ activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
19
+ rack (1.4.4) lib/rack/lock.rb:15:in `call'
20
+ actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
21
+ railties (3.2.11) lib/rails/engine.rb:479:in `call'
22
+ railties (3.2.11) lib/rails/application.rb:223:in `call'
23
+ railties (3.2.11) lib/rails/railtie/configurable.rb:30:in `method_missing'
24
+ passenger (3.0.14) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
25
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:516:in `accept_and_process_next_request'
26
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
27
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:206:in `start_request_handler'
28
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:171:in `block in handle_spawn_application'
29
+ passenger (3.0.14) lib/phusion_passenger/utils.rb:470:in `safe_fork'
30
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:166:in `handle_spawn_application'
31
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
32
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
33
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:180:in `start'
34
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:129:in `start'
35
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in spawn_rack_application'
36
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
37
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:246:in `block in spawn_rack_application'
38
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
39
+ <internal:prelude>:10:in `synchronize'
40
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
41
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
42
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
43
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
44
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
45
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
46
+ passenger (3.0.14) helper-scripts/passenger-spawn-server:99:in `<main>'
47
+
48
+
49
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.2ms)
50
+
51
+
52
+ Started GET "/woo" for 127.0.0.1 at 2013-02-05 09:02:55 -0500
53
+
54
+ NoMethodError (undefined method `action' for SiteController:Class):
55
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
56
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:36:in `call'
57
+ journey (1.0.4) lib/journey/router.rb:68:in `block in call'
58
+ journey (1.0.4) lib/journey/router.rb:56:in `each'
59
+ journey (1.0.4) lib/journey/router.rb:56:in `call'
60
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in `call'
61
+ actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
62
+ rack (1.4.4) lib/rack/etag.rb:23:in `call'
63
+ rack (1.4.4) lib/rack/conditionalget.rb:25:in `call'
64
+ actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in `call'
65
+ actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
66
+ actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in `call'
67
+ rack (1.4.4) lib/rack/session/abstract/id.rb:210:in `context'
68
+ rack (1.4.4) lib/rack/session/abstract/id.rb:205:in `call'
69
+ actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in `call'
70
+ activerecord (3.2.11) lib/active_record/query_cache.rb:64:in `call'
71
+ activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
72
+ actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
73
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `_run__3036648868073490833__call__700523775367203622__callbacks'
74
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
75
+ activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
76
+ activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
77
+ actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
78
+ actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in `call'
79
+ actionpack (3.2.11) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
80
+ actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
81
+ actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
82
+ railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
83
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
84
+ activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
85
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
86
+ actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
87
+ rack (1.4.4) lib/rack/methodoverride.rb:21:in `call'
88
+ rack (1.4.4) lib/rack/runtime.rb:17:in `call'
89
+ activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
90
+ rack (1.4.4) lib/rack/lock.rb:15:in `call'
91
+ actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
92
+ railties (3.2.11) lib/rails/engine.rb:479:in `call'
93
+ railties (3.2.11) lib/rails/application.rb:223:in `call'
94
+ railties (3.2.11) lib/rails/railtie/configurable.rb:30:in `method_missing'
95
+ passenger (3.0.14) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
96
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:516:in `accept_and_process_next_request'
97
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
98
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:206:in `start_request_handler'
99
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:171:in `block in handle_spawn_application'
100
+ passenger (3.0.14) lib/phusion_passenger/utils.rb:470:in `safe_fork'
101
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:166:in `handle_spawn_application'
102
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
103
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
104
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:180:in `start'
105
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:129:in `start'
106
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in spawn_rack_application'
107
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
108
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:246:in `block in spawn_rack_application'
109
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
110
+ <internal:prelude>:10:in `synchronize'
111
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
112
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
113
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
114
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
115
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
116
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
117
+ passenger (3.0.14) helper-scripts/passenger-spawn-server:99:in `<main>'
118
+
119
+
120
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.7ms)
121
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (3.8ms)
122
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (18.0ms)
123
+
124
+
125
+ Started GET "/woo" for 127.0.0.1 at 2013-02-05 09:03:20 -0500
126
+ Processing by SiteController#index as HTML
127
+ Rendered text template (0.0ms)
128
+ Completed 200 OK in 4ms (Views: 3.2ms | ActiveRecord: 0.0ms)
129
+
130
+
131
+ Started GET "/employee_with_custom_controller" for 127.0.0.1 at 2013-02-05 09:03:27 -0500
132
+
133
+ ActionController::RoutingError (No route matches [GET] "/employee_with_custom_controller"):
134
+ actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
135
+ actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
136
+ railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
137
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
138
+ activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
139
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
140
+ actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
141
+ rack (1.4.4) lib/rack/methodoverride.rb:21:in `call'
142
+ rack (1.4.4) lib/rack/runtime.rb:17:in `call'
143
+ activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
144
+ rack (1.4.4) lib/rack/lock.rb:15:in `call'
145
+ actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
146
+ railties (3.2.11) lib/rails/engine.rb:479:in `call'
147
+ railties (3.2.11) lib/rails/application.rb:223:in `call'
148
+ railties (3.2.11) lib/rails/railtie/configurable.rb:30:in `method_missing'
149
+ passenger (3.0.14) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
150
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:516:in `accept_and_process_next_request'
151
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
152
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:206:in `start_request_handler'
153
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:171:in `block in handle_spawn_application'
154
+ passenger (3.0.14) lib/phusion_passenger/utils.rb:470:in `safe_fork'
155
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:166:in `handle_spawn_application'
156
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
157
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
158
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:180:in `start'
159
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:129:in `start'
160
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in spawn_rack_application'
161
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
162
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:246:in `block in spawn_rack_application'
163
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
164
+ <internal:prelude>:10:in `synchronize'
165
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
166
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
167
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
168
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
169
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
170
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
171
+ passenger (3.0.14) helper-scripts/passenger-spawn-server:99:in `<main>'
172
+
173
+
174
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.9ms)
175
+
176
+
177
+ Started GET "/employee_report_with_custom_controller" for 127.0.0.1 at 2013-02-05 09:03:37 -0500
178
+
179
+ ActionController::RoutingError (No route matches [GET] "/employee_report_with_custom_controller"):
180
+ actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
181
+ actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
182
+ railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
183
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
184
+ activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
185
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
186
+ actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
187
+ rack (1.4.4) lib/rack/methodoverride.rb:21:in `call'
188
+ rack (1.4.4) lib/rack/runtime.rb:17:in `call'
189
+ activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
190
+ rack (1.4.4) lib/rack/lock.rb:15:in `call'
191
+ actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
192
+ railties (3.2.11) lib/rails/engine.rb:479:in `call'
193
+ railties (3.2.11) lib/rails/application.rb:223:in `call'
194
+ railties (3.2.11) lib/rails/railtie/configurable.rb:30:in `method_missing'
195
+ passenger (3.0.14) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
196
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:516:in `accept_and_process_next_request'
197
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
198
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:206:in `start_request_handler'
199
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:171:in `block in handle_spawn_application'
200
+ passenger (3.0.14) lib/phusion_passenger/utils.rb:470:in `safe_fork'
201
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:166:in `handle_spawn_application'
202
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
203
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
204
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:180:in `start'
205
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:129:in `start'
206
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in spawn_rack_application'
207
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
208
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:246:in `block in spawn_rack_application'
209
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
210
+ <internal:prelude>:10:in `synchronize'
211
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
212
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
213
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
214
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
215
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
216
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
217
+ passenger (3.0.14) helper-scripts/passenger-spawn-server:99:in `<main>'
218
+
219
+
220
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.6ms)
221
+
222
+
223
+ Started GET "/employee_report_custom_controller" for 127.0.0.1 at 2013-02-05 09:03:44 -0500
224
+ Processing by SiteController#report as HTML
225
+ Completed 500 Internal Server Error in 2ms
226
+
227
+ NameError (uninitialized constant SiteController::EmployeeReport):
228
+ app/controllers/site_controller.rb:7:in `report'
229
+
230
+
231
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.4ms)
232
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (1.3ms)
233
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (10.8ms)
234
+
235
+
236
+ Started GET "/employee_report_custom_controller" for 127.0.0.1 at 2013-02-05 09:04:26 -0500
237
+
238
+ LoadError (cannot load such file -- /Users/adamhunter/Studio/adamhunter/dossier/spec/support/reports/employee_report.rb):
239
+ app/controllers/site_controller.rb:1:in `<top (required)>'
240
+
241
+
242
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
243
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
244
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.4ms)
245
+
246
+
247
+ Started GET "/employee_report_custom_controller" for 127.0.0.1 at 2013-02-05 09:05:39 -0500
248
+ Processing by SiteController#report as HTML
249
+ EmployeeReport (0.3ms) SELECT * FROM employees WHERE 1=1
250
+ ORDER BY name ASC
251
+ Rendered /Users/adamhunter/Studio/adamhunter/dossier/app/views/dossier/reports/show.html.haml within layouts/application (12.0ms)
252
+ Completed 500 Internal Server Error in 23ms
253
+
254
+ ActionController::RoutingError (No route matches {:controller=>"dossier/reports", :action=>"show", :format=>"csv", :options=>nil}):
255
+ app/controllers/site_controller.rb:10:in `report'
256
+
257
+
258
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.5ms)
259
+
260
+
261
+ Started GET "/employee_report_custom_controller" for 127.0.0.1 at 2013-02-05 09:06:14 -0500
262
+ Processing by SiteController#report as HTML
263
+ EmployeeReport (0.3ms) SELECT * FROM employees WHERE 1=1
264
+ ORDER BY name ASC
265
+ Rendered /Users/adamhunter/Studio/adamhunter/dossier/app/views/dossier/reports/show.html.haml within layouts/application (4.7ms)
266
+ Compiled application.css (0ms) (pid 28859)
267
+ Compiled jquery.js (23ms) (pid 28859)
268
+ Compiled jquery_ujs.js (0ms) (pid 28859)
269
+ Compiled application.js (48ms) (pid 28859)
270
+ Completed 200 OK in 112ms (Views: 111.2ms | ActiveRecord: 0.3ms)
271
+
272
+
273
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2013-02-05 09:06:15 -0500
274
+ Served asset /application.css - 200 OK (4ms)
275
+
276
+
277
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2013-02-05 09:06:15 -0500
278
+ Served asset /application.js - 200 OK (5ms)
279
+
280
+
281
+ Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2013-02-05 09:06:15 -0500
282
+ Served asset /jquery_ujs.js - 200 OK (3ms)
32
283
  Connecting to database specified by database.yml
33
284
  Connecting to database specified by database.yml
285
+
286
+
287
+ Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2013-02-05 09:06:15 -0500
288
+ Served asset /jquery.js - 200 OK (3ms)
289
+
290
+
291
+ Started GET "/reports/employee.csv" for 127.0.0.1 at 2013-02-05 09:06:20 -0500
292
+ Processing by Dossier::ReportsController#show as CSV
293
+ Parameters: {"report"=>"employee"}
294
+ Completed 500 Internal Server Error in 1ms
295
+
296
+ NameError (uninitialized constant EmployeeReport):
297
+ activesupport (3.2.11) lib/active_support/inflector/methods.rb:230:in `block in constantize'
298
+ activesupport (3.2.11) lib/active_support/inflector/methods.rb:229:in `each'
299
+ activesupport (3.2.11) lib/active_support/inflector/methods.rb:229:in `constantize'
300
+ activesupport (3.2.11) lib/active_support/core_ext/string/inflections.rb:54:in `constantize'
301
+ /Users/adamhunter/Studio/adamhunter/dossier/lib/dossier.rb:26:in `name_to_class'
302
+ /Users/adamhunter/Studio/adamhunter/dossier/app/controllers/dossier/reports_controller.rb:35:in `report_class'
303
+ /Users/adamhunter/Studio/adamhunter/dossier/app/controllers/dossier/reports_controller.rb:4:in `show'
304
+ actionpack (3.2.11) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
305
+ actionpack (3.2.11) lib/abstract_controller/base.rb:167:in `process_action'
306
+ actionpack (3.2.11) lib/action_controller/metal/rendering.rb:10:in `process_action'
307
+ actionpack (3.2.11) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
308
+ activesupport (3.2.11) lib/active_support/callbacks.rb:414:in `_run__3560204119445928208__process_action__2105358548339878917__callbacks'
309
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
310
+ activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
311
+ activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
312
+ actionpack (3.2.11) lib/abstract_controller/callbacks.rb:17:in `process_action'
313
+ actionpack (3.2.11) lib/action_controller/metal/rescue.rb:29:in `process_action'
314
+ actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
315
+ activesupport (3.2.11) lib/active_support/notifications.rb:123:in `block in instrument'
316
+ activesupport (3.2.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
317
+ activesupport (3.2.11) lib/active_support/notifications.rb:123:in `instrument'
318
+ actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
319
+ actionpack (3.2.11) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
320
+ activerecord (3.2.11) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
321
+ actionpack (3.2.11) lib/abstract_controller/base.rb:121:in `process'
322
+ actionpack (3.2.11) lib/abstract_controller/rendering.rb:45:in `process'
323
+ actionpack (3.2.11) lib/action_controller/metal.rb:203:in `dispatch'
324
+ actionpack (3.2.11) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
325
+ actionpack (3.2.11) lib/action_controller/metal.rb:246:in `block in action'
326
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `call'
327
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
328
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:36:in `call'
329
+ journey (1.0.4) lib/journey/router.rb:68:in `block in call'
330
+ journey (1.0.4) lib/journey/router.rb:56:in `each'
331
+ journey (1.0.4) lib/journey/router.rb:56:in `call'
332
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in `call'
333
+ actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
334
+ rack (1.4.4) lib/rack/etag.rb:23:in `call'
335
+ rack (1.4.4) lib/rack/conditionalget.rb:25:in `call'
336
+ actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in `call'
337
+ actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
338
+ actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in `call'
339
+ rack (1.4.4) lib/rack/session/abstract/id.rb:210:in `context'
340
+ rack (1.4.4) lib/rack/session/abstract/id.rb:205:in `call'
341
+ actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in `call'
342
+ activerecord (3.2.11) lib/active_record/query_cache.rb:64:in `call'
343
+ activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
344
+ actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
345
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `_run__3036648868073490833__call__700523775367203622__callbacks'
346
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
347
+ activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
348
+ activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
349
+ actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
350
+ actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in `call'
351
+ actionpack (3.2.11) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
352
+ actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
353
+ actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
354
+ railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
355
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
356
+ activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
357
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
358
+ actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
359
+ rack (1.4.4) lib/rack/methodoverride.rb:21:in `call'
360
+ rack (1.4.4) lib/rack/runtime.rb:17:in `call'
361
+ activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
362
+ rack (1.4.4) lib/rack/lock.rb:15:in `call'
363
+ actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
364
+ railties (3.2.11) lib/rails/engine.rb:479:in `call'
365
+ railties (3.2.11) lib/rails/application.rb:223:in `call'
366
+ railties (3.2.11) lib/rails/railtie/configurable.rb:30:in `method_missing'
367
+ passenger (3.0.14) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
368
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:516:in `accept_and_process_next_request'
369
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
370
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:206:in `start_request_handler'
371
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:171:in `block in handle_spawn_application'
372
+ passenger (3.0.14) lib/phusion_passenger/utils.rb:470:in `safe_fork'
373
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:166:in `handle_spawn_application'
374
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
375
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
376
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:180:in `start'
377
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:129:in `start'
378
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in spawn_rack_application'
379
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
380
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:246:in `block in spawn_rack_application'
381
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
382
+ <internal:prelude>:10:in `synchronize'
383
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
384
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
385
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
386
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
387
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
388
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
389
+ passenger (3.0.14) helper-scripts/passenger-spawn-server:99:in `<main>'
390
+
391
+
392
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
393
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.9ms)
394
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.5ms)
395
+
396
+
397
+ Started GET "/reports/employee.csv" for 127.0.0.1 at 2013-02-05 09:06:30 -0500
398
+ Processing by Dossier::ReportsController#show as CSV
399
+ Parameters: {"report"=>"employee"}
400
+ Completed 500 Internal Server Error in 1ms
401
+
402
+ NameError (uninitialized constant EmployeeReport):
403
+ activesupport (3.2.11) lib/active_support/inflector/methods.rb:230:in `block in constantize'
404
+ activesupport (3.2.11) lib/active_support/inflector/methods.rb:229:in `each'
405
+ activesupport (3.2.11) lib/active_support/inflector/methods.rb:229:in `constantize'
406
+ activesupport (3.2.11) lib/active_support/core_ext/string/inflections.rb:54:in `constantize'
407
+ /Users/adamhunter/Studio/adamhunter/dossier/lib/dossier.rb:26:in `name_to_class'
408
+ /Users/adamhunter/Studio/adamhunter/dossier/app/controllers/dossier/reports_controller.rb:35:in `report_class'
409
+ /Users/adamhunter/Studio/adamhunter/dossier/app/controllers/dossier/reports_controller.rb:4:in `show'
410
+ actionpack (3.2.11) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
411
+ actionpack (3.2.11) lib/abstract_controller/base.rb:167:in `process_action'
412
+ actionpack (3.2.11) lib/action_controller/metal/rendering.rb:10:in `process_action'
413
+ actionpack (3.2.11) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
414
+ activesupport (3.2.11) lib/active_support/callbacks.rb:414:in `_run__3560204119445928208__process_action__2105358548339878917__callbacks'
415
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
416
+ activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
417
+ activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
418
+ actionpack (3.2.11) lib/abstract_controller/callbacks.rb:17:in `process_action'
419
+ actionpack (3.2.11) lib/action_controller/metal/rescue.rb:29:in `process_action'
420
+ actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
421
+ activesupport (3.2.11) lib/active_support/notifications.rb:123:in `block in instrument'
422
+ activesupport (3.2.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
423
+ activesupport (3.2.11) lib/active_support/notifications.rb:123:in `instrument'
424
+ actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
425
+ actionpack (3.2.11) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
426
+ activerecord (3.2.11) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
427
+ actionpack (3.2.11) lib/abstract_controller/base.rb:121:in `process'
428
+ actionpack (3.2.11) lib/abstract_controller/rendering.rb:45:in `process'
429
+ actionpack (3.2.11) lib/action_controller/metal.rb:203:in `dispatch'
430
+ actionpack (3.2.11) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
431
+ actionpack (3.2.11) lib/action_controller/metal.rb:246:in `block in action'
432
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `call'
433
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
434
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:36:in `call'
435
+ journey (1.0.4) lib/journey/router.rb:68:in `block in call'
436
+ journey (1.0.4) lib/journey/router.rb:56:in `each'
437
+ journey (1.0.4) lib/journey/router.rb:56:in `call'
438
+ actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in `call'
439
+ actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
440
+ rack (1.4.4) lib/rack/etag.rb:23:in `call'
441
+ rack (1.4.4) lib/rack/conditionalget.rb:25:in `call'
442
+ actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in `call'
443
+ actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
444
+ actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in `call'
445
+ rack (1.4.4) lib/rack/session/abstract/id.rb:210:in `context'
446
+ rack (1.4.4) lib/rack/session/abstract/id.rb:205:in `call'
447
+ actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in `call'
448
+ activerecord (3.2.11) lib/active_record/query_cache.rb:64:in `call'
449
+ activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
450
+ actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
451
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `_run__3036648868073490833__call__700523775367203622__callbacks'
452
+ activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
453
+ activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
454
+ activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
455
+ actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
456
+ actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in `call'
457
+ actionpack (3.2.11) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
458
+ actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
459
+ actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
460
+ railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
461
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
462
+ activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
463
+ railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
464
+ actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
465
+ rack (1.4.4) lib/rack/methodoverride.rb:21:in `call'
466
+ rack (1.4.4) lib/rack/runtime.rb:17:in `call'
467
+ activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
468
+ rack (1.4.4) lib/rack/lock.rb:15:in `call'
469
+ actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
470
+ railties (3.2.11) lib/rails/engine.rb:479:in `call'
471
+ railties (3.2.11) lib/rails/application.rb:223:in `call'
472
+ railties (3.2.11) lib/rails/railtie/configurable.rb:30:in `method_missing'
473
+ passenger (3.0.14) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
474
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:516:in `accept_and_process_next_request'
475
+ passenger (3.0.14) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
476
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:206:in `start_request_handler'
477
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:171:in `block in handle_spawn_application'
478
+ passenger (3.0.14) lib/phusion_passenger/utils.rb:470:in `safe_fork'
479
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:166:in `handle_spawn_application'
480
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
481
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
482
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:180:in `start'
483
+ passenger (3.0.14) lib/phusion_passenger/rack/application_spawner.rb:129:in `start'
484
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in spawn_rack_application'
485
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
486
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:246:in `block in spawn_rack_application'
487
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
488
+ <internal:prelude>:10:in `synchronize'
489
+ passenger (3.0.14) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
490
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
491
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
492
+ passenger (3.0.14) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
493
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
494
+ passenger (3.0.14) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
495
+ passenger (3.0.14) helper-scripts/passenger-spawn-server:99:in `<main>'
496
+
497
+
498
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.2ms)
499
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
500
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.6ms)
501
+
502
+
503
+ Started GET "/employee_report_custom_controller" for 127.0.0.1 at 2013-02-05 09:09:20 -0500
504
+ Processing by SiteController#report as HTML
505
+ Completed 500 Internal Server Error in 2ms
506
+
507
+ NameError (uninitialized constant SiteController::EmployeeReport):
508
+ app/controllers/site_controller.rb:7:in `report'
509
+
510
+
511
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.0ms)
512
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (0.8ms)
513
+ Rendered /Users/adamhunter/.rvm/gems/ruby-1.9.3-p194@dossier2/gems/actionpack-3.2.11/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (7.2ms)