Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: antage/eggog
base: da09662497
...
head fork: antage/eggog
compare: bc15559ac7
  • 6 commits
  • 25 files changed
  • 0 commit comments
  • 1 contributor
View
1  Gemfile
@@ -8,6 +8,7 @@ gem "schema_plus"
gem "stateful_link"
gem "formtastic", "~> 2.2"
+gem "happymapper"
group :development do
gem "looksee"
View
4 Gemfile.lock
@@ -64,6 +64,8 @@ GEM
activesupport (~> 3.0)
haml (~> 3.0)
railties (~> 3.0)
+ happymapper (0.4.0)
+ libxml-ruby (~> 2.0)
hike (1.2.1)
i18n (0.6.0)
journey (1.0.3)
@@ -71,6 +73,7 @@ GEM
railties (>= 3.2.0, < 5.0)
thor (~> 0.14)
json (1.6.6)
+ libxml-ruby (2.3.2)
looksee (1.0.3)
mail (2.4.4)
i18n (>= 0.4.0)
@@ -144,6 +147,7 @@ DEPENDENCIES
formtastic (~> 2.2)
formtastic-plus-bootstrap!
haml-rails
+ happymapper
jquery-rails
looksee
pg
View
52 app/assets/stylesheets/errors.css.scss
@@ -1,7 +1,53 @@
@import "bootstrap/variables";
-body.errors.index {
- span.location {
- color: $grayLight;
+body.errors {
+ &.index {
+ #filters {
+ padding: $baseLineHeight (0.5 * $baseLineHeight);
+ }
+
+ span.location {
+ color: $grayLight;
+ }
+ }
+
+ &.show {
+ #header {
+ h1 {
+ font-size: 14pt;
+ }
+
+ dl {
+ font-size: 11pt;
+ dt, dd {
+ }
+ }
+ }
+
+ ul.nav.nav-tabs {
+ > li.active > a {
+ font-weight: bold;
+ }
+ }
+
+ table#backtrace {
+ tbody > tr:hover {
+ background-color: $grayLighter;
+ }
+
+ th, td {
+ &.method {
+ padding-right: 1em;
+ vertical-align: top;
+ text-align: right;
+ }
+
+ &.line {
+ padding-left: 1em;
+ vertical-align: top;
+ text-align: left;
+ }
+ }
+ }
}
}
View
4 app/assets/stylesheets/layout.css.scss
@@ -1,4 +1,8 @@
+@import "bootstrap/variables";
+
body {
/* don't overlap the navbar */
margin-top: 40px + 10px;
+
+ margin-bottom: 2 * $baseLineHeight;
}
View
8 app/controllers/airbrake_notices_controller.rb
@@ -1,11 +1,11 @@
class AirbrakeNoticesController < ApplicationController
- layout false
respond_to :xml
- skip_before_filter :verify_authenticity_token, :only => [:create, :verify]
+ skip_before_filter :verify_authenticity_token, :only => [:create]
def create
- @notice = Notice.create_from_request(request)
- respond_with @notice
+ @error = Error.build_from_xml(request.raw_post)
+ @error.save
+ respond_with @error
end
end
View
2  app/controllers/dashboard_controller.rb
@@ -1,5 +1,5 @@
class DashboardController < ApplicationController
def show
- @errors_count = Notice.count
+ @errors_count = Error.count
end
end
View
9 app/controllers/errors_controller.rb
@@ -3,9 +3,9 @@ class ErrorsController < ApplicationController
def index
@applications = Application.all
- scope = Notice
+ scope = Error
unless @application.nil?
- scope = @application.notices
+ scope = @application.errors
end
@errors =
scope.
@@ -15,6 +15,11 @@ def index
end
def show
+ scope = Error
+ unless @application.nil?
+ scope = @application.errors
+ end
+ @error = scope.find(params[:id])
end
private
View
2  app/models/application.rb
@@ -1,5 +1,5 @@
class Application < ActiveRecord::Base
- has_many :notices,
+ has_many :errors,
dependent: :delete_all
attr_accessible :title, :key
View
44 app/models/error.rb
@@ -0,0 +1,44 @@
+class Error < ActiveRecord::Base
+ belongs_to :application
+
+ validates :klass, length: { maximum: 255 }
+ validates :message, length: { maximum: 1023 }
+ validates :url, length: { maximum: 4095 }
+ validates :component, length: { maximum: 255 }
+ validates :action, length: { maximum: 255 }
+ validates :hostname, length: { maximum: 255 }
+ validates :environment, length: { maximum: 255 }
+ validates :notice, length: { maximum: 131071 }
+
+ def notice
+ Notice::Notice # force loading Notice class for unmarshaling
+ @__parsed_notice ||= YAML.parse(read_attribute(:notice)).to_ruby
+ end
+
+ def notice=(value)
+ write_attribute(:notice, value.to_yaml)
+ @__parsed_notice = nil
+ end
+
+ def self.build_from_xml(xml)
+ notice = Notice::Notice.parse(xml)
+ error = self.new
+
+ app = Application.where(key: notice.api_key).first
+ if app.nil?
+ error.errors.add(:base, "No application exists with the given API key.")
+ else
+ error.application = app
+
+ error.klass = notice.error.klass
+ error.message = notice.error.message
+ error.url = notice.request.url
+ error.component = notice.request.component
+ error.action = notice.request.action
+ error.hostname = notice.server_environment.hostname
+ error.environment = notice.server_environment.environment_name
+ error.notice = notice
+ end
+ error
+ end
+end
View
40 app/models/notice.rb
@@ -1,40 +0,0 @@
-class Notice < ActiveRecord::Base
- belongs_to :application
-
- def self.create_from_request(request)
- notice = self.new
- params = request.params
- catch :halt do
- unless params.has_key?(:notice)
- notice.errors.add :base, "Request consists no notice data."
- throw :halt
- end
- notice_params = params[:notice]
- if notice_params[:api_key].blank?
- notice.errors.add :base, "Notice data has no API key."
- throw :halt
- end
- app = Application.find_by_key(notice_params[:api_key])
- if app.nil?
- notice.errors.add :base, "No application exists with the given API key."
- throw :halt
- end
-
- notice.application = app
- notice.error_class = notice_params[:error][:class]
- notice.error_message = notice_params[:error][:message]
- if notice_params.has_key?(:request)
- notice.request_url = notice_params[:request][:url]
- notice.request_component = notice_params[:request][:component]
- notice.request_action = notice_params[:request][:action]
- end
- if notice_params.has_key?(:server_environment)
- notice.server_hostname = notice_params[:server_environment][:hostname]
- notice.server_environment_name = notice_params[:server_environment][:environment_name]
- end
- notice.body = params.to_json
- notice.save
- end
- notice
- end
-end
View
11 app/models/notice/backtrace_line.rb
@@ -0,0 +1,11 @@
+module Notice
+ class BacktraceLine
+ include HappyMapper
+
+ tag "line"
+
+ attribute :number, Integer
+ attribute :file, String
+ attribute :method, String
+ end
+end
View
9 app/models/notice/error.rb
@@ -0,0 +1,9 @@
+module Notice
+ class Error
+ include HappyMapper
+
+ element :klass, String, tag: "class"
+ element :message, String
+ has_many :backtrace, BacktraceLine
+ end
+end
View
11 app/models/notice/notice.rb
@@ -0,0 +1,11 @@
+module Notice
+ class Notice
+ include HappyMapper
+
+ element :api_key, String, tag: "api-key"
+ has_one :notifier, Notifier
+ has_one :error, ::Notice::Error
+ has_one :request, Request
+ has_one :server_environment, ServerEnvironment, tag: "server-environment"
+ end
+end
View
9 app/models/notice/notifier.rb
@@ -0,0 +1,9 @@
+module Notice
+ class Notifier
+ include HappyMapper
+
+ element :name, String
+ element :version, String
+ element :url, String
+ end
+end
View
12 app/models/notice/request.rb
@@ -0,0 +1,12 @@
+module Notice
+ class Request
+ include HappyMapper
+
+ element :url, String
+ element :component, String
+ element :action, String
+
+ has_many :params, Var
+ has_many :cgi_data, Var
+ end
+end
View
11 app/models/notice/server_environment.rb
@@ -0,0 +1,11 @@
+module Notice
+ class ServerEnvironment
+ include HappyMapper
+
+ tag "server-environment"
+
+ element :project_root, String, tag: "project-root"
+ element :environment_name, String, tag: "environment-name"
+ element :hostname, String
+ end
+end
View
10 app/models/notice/var.rb
@@ -0,0 +1,10 @@
+module Notice
+ class Var
+ include HappyMapper
+
+ attribute :key, String
+ content :value
+
+ has_many :children, Var, tag: "var"
+ end
+end
View
10 app/views/airbrake_notices/create.xml.builder
@@ -1,7 +1,7 @@
xml.instruct!(:xml, encoding: "UTF-8")
-unless @notice.errors.empty?
+unless @error.errors.empty?
xml.errors do
- @notice.errors.each do |attr, msgs|
+ @error.errors.each do |attr, msgs|
msgs.each do |msg|
xml.error msg
end
@@ -9,8 +9,8 @@ unless @notice.errors.empty?
end
else
xml.notice do
- xml.tag!("error-id", @notice.id.to_s, type: "integer")
- xml.url notice_url(@notice)
- xml.id @notice.id.to_s, type: "integer"
+ xml.tag!("error-id", @error.id.to_s, type: "integer")
+ xml.url(@error.new_record? ? "" : error_url(@error))
+ xml.id @error.id.to_s, type: "integer"
end
end
View
31 app/views/errors/index.html.haml
@@ -15,24 +15,25 @@
.row
.span3
- %ul.nav.nav-list.well
- %li.nav-header
- Applications
- - @applications.each do |application|
- %li{class: ("active" if (@application.present? && @application.id == application.id))}
- %a(href="#{application_errors_path(application)}")
- %span.badge.badge-error= application.notices.count
- = application.title
- %li.divider/
- %li{class: ("active" if @application.nil?)}
- %a(href="#{errors_path}") All errors
+ #filters.well
+ %ul.nav.nav-list
+ %li.nav-header
+ Applications
+ - @applications.each do |application|
+ %li{class: ("active" if (@application.present? && @application.id == application.id))}
+ %a(href="#{application_errors_path(application)}")
+ %span.badge.badge-error= application.errors.count
+ = application.title
+ %li.divider/
+ %li{class: ("active" if @application.nil?)}
+ %a(href="#{errors_path}") All errors
.span9
%table.table.table-striped.table-bordered
%thead
%tr
- if @application.nil?
%th Application
- %th Message & location
+ %th Message & Location
%th Received at
%tbody
- @errors.each do |error|
@@ -42,8 +43,8 @@
%a(href="#{application_errors_path(error.application)}" title="Show errors for #{error.application.title} only")
= error.application.title
%td
- %a(href="#{error_path(error)}" title="#{error.error_message}")
- = truncate(error.error_message, length: 80)
+ %a(href="#{error_path(error)}" title="#{error.message}")
+ = truncate(error.message, length: 80)
%br
- %span.location #{error.request_component}##{error.request_action}
+ %span.location #{error.component}##{error.action}
%td= time_ago_in_words(error.created_at)
View
65 app/views/errors/show.html.haml
@@ -0,0 +1,65 @@
+- content_for :title, "Error ##{@error.id}"
+.row
+ .span12
+ %ul.breadcrumb
+ %li
+ %a(href="#{root_path}") Home
+ %span.divider /
+ %li
+ %a(href="#{application_errors_path(@error.application)}")= @error.application.title
+ %span.divider /
+ %li.active
+ Error ##{@error.id}
+= render :partial => "shared/flash_messages"
+
+.row
+ .span12
+ #header.well
+ %h1= @error.message
+ %dl.dl-horizontal
+ %dt Application:
+ %dd= link_to @error.application.title, application_errors_path(@error.application)
+ %dt Environment:
+ %dd= @error.environment
+
+.row
+ .span12
+ .tabbable
+ %ul.nav.nav-tabs
+ %li.active
+ %a(href="#main-tab" data-toggle="tab") Main
+ %li
+ %a(href="#backtrace-tab" data-toggle="tab") Backtrace
+ .tab-content
+ #main-tab.tab-pane.active
+ %table.table.table-striped.table-bordered
+ %tbody
+ %tr
+ %td Error class:
+ %td= @error.klass
+ %tr
+ %td Error message:
+ %td= @error.message
+ %tr
+ %td Received at:
+ %td= l(@error.created_at, format: :long)
+ %tr
+ %td URL:
+ %td= @error.url
+ %tr
+ %td Location:
+ %td #{@error.component}##{@error.action}
+ #backtrace-tab.tab-pane
+ %table#backtrace
+ %thead
+ %tr
+ %th.method Method
+ %th.line Line
+ %tbody
+ - @error.notice.error.backtrace.each do |line|
+ %tr
+ %td.method
+ %span(title="#{line.method}")= truncate(line.method, length: 32)
+ %td.line
+ %span(title="#{line.file}, line #{line.number}") #{line.file}#L#{line.number}
+
View
1  app/views/layouts/application.html.haml
@@ -1,6 +1,7 @@
!!! 5
%html
%head
+ %meta(name="viewport" content="width=device-width, initial-scale=1.0")
%title<
- if yield(:title).blank?
Eggog
View
23 db/migrate/20120411055551_create_errors.rb
@@ -0,0 +1,23 @@
+class CreateErrors < ActiveRecord::Migration
+ def change
+ create_table :errors do |t|
+ t.references :application,
+ on_update: :cascade,
+ on_delete: :cascade
+
+ t.string :klass
+ t.string :message, limit: 1024
+
+ t.string :url, limit: 4096
+ t.string :component
+ t.string :action
+
+ t.string :hostname
+ t.string :environment
+
+ t.string :notice, limit: 131072, null: false
+
+ t.datetime :created_at, null: false
+ end
+ end
+end
View
23 db/migrate/20120411055551_create_notices.rb
@@ -1,23 +0,0 @@
-class CreateNotices < ActiveRecord::Migration
- def change
- create_table :notices do |t|
- t.references :application,
- on_update: :cascade,
- on_delete: :cascade
-
- t.string :error_class
- t.string :error_message, :limit => 1024
-
- t.string :request_url, :limit => 4096
- t.string :request_component
- t.string :request_action
-
- t.string :server_hostname
- t.string :server_environment_name
-
- t.string :body, :limit => 65536
-
- t.timestamps
- end
- end
-end
View
25 db/schema.rb
@@ -21,20 +21,19 @@
t.index ["key"], :name => "index_applications_on_key", :unique => true
end
- create_table "notices", :force => true do |t|
+ create_table "errors", :force => true do |t|
t.integer "application_id"
- t.string "error_class"
- t.string "error_message", :limit => 1024
- t.string "request_url", :limit => 4096
- t.string "request_component"
- t.string "request_action"
- t.string "server_hostname"
- t.string "server_environment_name"
- t.string "body", :limit => 65536
- t.datetime "created_at", :null => false
- t.datetime "updated_at", :null => false
- t.index ["application_id"], :name => "index_notices_on_application_id"
- t.foreign_key ["application_id"], "applications", ["id"], :on_update => :cascade, :on_delete => :cascade, :name => "notices_application_id_fkey"
+ t.string "klass"
+ t.string "message", :limit => 1024
+ t.string "url", :limit => 4096
+ t.string "component"
+ t.string "action"
+ t.string "hostname"
+ t.string "environment"
+ t.string "notice", :limit => 131072, :null => false
+ t.datetime "created_at", :null => false
+ t.index ["application_id"], :name => "index_errors_on_application_id"
+ t.foreign_key ["application_id"], "applications", ["id"], :on_update => :cascade, :on_delete => :cascade, :name => "errors_application_id_fkey"
end
end
View
160 sample-notice.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notice version="2.2">
+ <api-key>2ae11f08dc322dbd87231cffeb2109a3</api-key>
+ <notifier>
+ <name>Airbrake Notifier</name>
+ <version>3.0.9</version>
+ <url>http://airbrake.io</url>
+ </notifier>
+ <error>
+ <class>AirbrakeTestingException</class>
+ <message>AirbrakeTestingException: Testing airbrake via "rake airbrake:test". If you can see this, it works.</message>
+ <backtrace>
+ <line number="407" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="_run__2509649397246812695__process_action__204699042087891850__callbacks"/>
+ <line number="405" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="__run_callback"/>
+ <line number="385" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="_run_process_action_callbacks"/>
+ <line number="81" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="run_callbacks"/>
+ <line number="17" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/abstract_controller/callbacks.rb" method="process_action"/>
+ <line number="29" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_controller/metal/rescue.rb" method="process_action"/>
+ <line number="30" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_controller/metal/instrumentation.rb" method="block in process_action"/>
+ <line number="123" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/notifications.rb" method="block in instrument"/>
+ <line number="20" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/notifications/instrumenter.rb" method="instrument"/>
+ <line number="123" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/notifications.rb" method="instrument"/>
+ <line number="29" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_controller/metal/instrumentation.rb" method="process_action"/>
+ <line number="205" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_controller/metal/params_wrapper.rb" method="process_action"/>
+ <line number="18" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/railties/controller_runtime.rb" method="process_action"/>
+ <line number="121" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/abstract_controller/base.rb" method="process"/>
+ <line number="45" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/abstract_controller/rendering.rb" method="process"/>
+ <line number="203" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_controller/metal.rb" method="dispatch"/>
+ <line number="14" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_controller/metal/rack_delegation.rb" method="dispatch"/>
+ <line number="246" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_controller/metal.rb" method="block in action"/>
+ <line number="73" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb" method="call"/>
+ <line number="73" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb" method="dispatch"/>
+ <line number="36" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb" method="call"/>
+ <line number="68" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/journey-1.0.3/lib/journey/router.rb" method="block in call"/>
+ <line number="56" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/journey-1.0.3/lib/journey/router.rb" method="each"/>
+ <line number="56" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/journey-1.0.3/lib/journey/router.rb" method="call"/>
+ <line number="600" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/routing/route_set.rb" method="call"/>
+ <line number="17" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/best_standards_support.rb" method="call"/>
+ <line number="23" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/rack-1.4.1/lib/rack/etag.rb" method="call"/>
+ <line number="25" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/rack-1.4.1/lib/rack/conditionalget.rb" method="call"/>
+ <line number="14" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/head.rb" method="call"/>
+ <line number="21" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/params_parser.rb" method="call"/>
+ <line number="242" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/flash.rb" method="call"/>
+ <line number="205" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/id.rb" method="context"/>
+ <line number="200" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/id.rb" method="call"/>
+ <line number="338" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/cookies.rb" method="call"/>
+ <line number="64" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/query_cache.rb" method="call"/>
+ <line number="467" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb" method="call"/>
+ <line number="28" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/callbacks.rb" method="block in call"/>
+ <line number="405" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="_run__3986900475907482207__call__4008993028845044191__callbacks"/>
+ <line number="405" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="__run_callback"/>
+ <line number="385" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="_run_call_callbacks"/>
+ <line number="81" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/callbacks.rb" method="run_callbacks"/>
+ <line number="27" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/callbacks.rb" method="call"/>
+ <line number="65" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb" method="call"/>
+ <line number="31" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/remote_ip.rb" method="call"/>
+ <line number="16" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/debug_exceptions.rb" method="call"/>
+ <line number="56" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/show_exceptions.rb" method="call"/>
+ <line number="26" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/railties-3.2.3/lib/rails/rack/logger.rb" method="call_app"/>
+ <line number="16" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/railties-3.2.3/lib/rails/rack/logger.rb" method="call"/>
+ <line number="22" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/request_id.rb" method="call"/>
+ <line number="21" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/rack-1.4.1/lib/rack/methodoverride.rb" method="call"/>
+ <line number="17" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/rack-1.4.1/lib/rack/runtime.rb" method="call"/>
+ <line number="72" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/cache/strategy/local_cache.rb" method="call"/>
+ <line number="15" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb" method="call"/>
+ <line number="62" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/static.rb" method="call"/>
+ <line number="479" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/railties-3.2.3/lib/rails/engine.rb" method="call"/>
+ <line number="220" file="[PROJECT_ROOT]/.gems/ruby/1.9.1/gems/railties-3.2.3/lib/rails/application.rb" method="call"/>
+ <line number="205" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/task.rb" method="call"/>
+ <line number="205" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/task.rb" method="block in execute"/>
+ <line number="200" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/task.rb" method="each"/>
+ <line number="200" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/task.rb" method="execute"/>
+ <line number="158" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/task.rb" method="block in invoke_with_call_chain"/>
+ <line number="211" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/monitor.rb" method="mon_synchronize"/>
+ <line number="151" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/task.rb" method="invoke_with_call_chain"/>
+ <line number="144" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/task.rb" method="invoke"/>
+ <line number="116" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="invoke_task"/>
+ <line number="94" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="block (2 levels) in top_level"/>
+ <line number="94" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="each"/>
+ <line number="94" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="block in top_level"/>
+ <line number="133" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="standard_exception_handling"/>
+ <line number="88" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="top_level"/>
+ <line number="66" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="block in run"/>
+ <line number="133" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="standard_exception_handling"/>
+ <line number="63" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/rake/application.rb" method="run"/>
+ <line number="36" file="/home/antage/.rvm/rubies/ruby-1.9.3-p125/bin/rake" method="&lt;main&gt;"/>
+ </backtrace>
+ </error>
+ <request>
+ <url>http://example.org/verify</url>
+ <component>application</component>
+ <action>verify</action>
+ <params>
+ <var key="action">verify</var>
+ <var key="controller">application</var>
+ </params>
+ <cgi-data>
+ <var key="rack.version">["1", "1"]</var>
+ <var key="rack.input">#&lt;StringIO:0x000000025a1c78&gt;</var>
+ <var key="rack.errors">#&lt;StringIO:0x000000025a2998&gt;</var>
+ <var key="rack.multithread">false</var>
+ <var key="rack.multiprocess">true</var>
+ <var key="rack.run_once">false</var>
+ <var key="REQUEST_METHOD">GET</var>
+ <var key="SERVER_NAME">example.org</var>
+ <var key="SERVER_PORT">80</var>
+ <var key="QUERY_STRING"></var>
+ <var key="PATH_INFO">/verify</var>
+ <var key="rack.url_scheme">http</var>
+ <var key="HTTPS">off</var>
+ <var key="SCRIPT_NAME"></var>
+ <var key="CONTENT_LENGTH">0</var>
+ <var key="ORIGINAL_FULLPATH">/verify</var>
+ <var key="action_dispatch.routes">#&lt;ActionDispatch::Routing::RouteSet:0x000000024ab738&gt;</var>
+ <var key="action_dispatch.parameter_filter">["password"]</var>
+ <var key="action_dispatch.secret_token">9f9c42f559a833282b2cc2ee6eed83f449129fa39d8ad672b1ca6d25c4be0a762c445cf0cc2beab1728fb02327a493547b15cc226daebc3d109f84c87f341744</var>
+ <var key="action_dispatch.show_exceptions">true</var>
+ <var key="action_dispatch.show_detailed_exceptions">true</var>
+ <var key="action_dispatch.logger">#&lt;Logger:0x00000002c31980&gt;</var>
+ <var key="action_dispatch.backtrace_cleaner">#&lt;Rails::BacktraceCleaner:0x00000002a55f30&gt;</var>
+ <var key="action_dispatch.request_id">0f5d8d414488247427ede42d7a6739a6</var>
+ <var key="action_dispatch.remote_ip"></var>
+ <var key="rack.session"></var>
+ <var key="rack.session.options">
+ <var key="path">/</var>
+ <var key="domain"></var>
+ <var key="expire_after"></var>
+ <var key="secure">false</var>
+ <var key="httponly">true</var>
+ <var key="defer">false</var>
+ <var key="renew">false</var>
+ <var key="coder">#&lt;Rack::Session::Cookie::Base64::Marshal:0x0000000280fbb8&gt;</var>
+ <var key="id"></var>
+ </var>
+ <var key="rack.request.cookie_hash"></var>
+ <var key="action_dispatch.cookies">#&lt;ActionDispatch::Cookies::CookieJar:0x00000002b0a868&gt;</var>
+ <var key="action_dispatch.request.unsigned_session_cookie"></var>
+ <var key="action_dispatch.request.path_parameters">
+ <var key="action">verify</var>
+ <var key="controller">application</var>
+ </var>
+ <var key="action_controller.instance">#&lt;ApplicationController:0x000000029090f0&gt;</var>
+ <var key="action_dispatch.request.content_type"></var>
+ <var key="action_dispatch.request.request_parameters"></var>
+ <var key="rack.request.query_string"></var>
+ <var key="rack.request.query_hash"></var>
+ <var key="action_dispatch.request.query_parameters"></var>
+ <var key="action_dispatch.request.parameters">
+ <var key="action">verify</var>
+ <var key="controller">application</var>
+ </var>
+ <var key="action_dispatch.request.formats">["text/html"]</var>
+ </cgi-data>
+ </request>
+ <server-environment>
+ <project-root>/home/antage/workspace/eggog</project-root>
+ <environment-name>development</environment-name>
+ <hostname>desktop</hostname>
+ </server-environment>
+</notice>

No commit comments for this range

Something went wrong with that request. Please try again.