Merge branch 'master' of github.com:diaspora/diaspora

This commit is contained in:
MrZYX 2011-01-27 21:04:12 +01:00
commit 86ab893a63
6 changed files with 60 additions and 13 deletions

View file

@ -6,7 +6,6 @@ class ApplicationController < ActionController::Base
has_mobile_fu
protect_from_forgery :except => :receive
#before_filter :mobile_except_ipad
before_filter :set_contacts_notifications_and_status, :except => [:create, :update]
before_filter :count_requests
before_filter :set_invites
@ -21,16 +20,6 @@ class ApplicationController < ActionController::Base
end
end
def mobile_except_ipad
if is_mobile_device?
if request.env["HTTP_USER_AGENT"].include? "iPad"
session[:mobile_view] = false
else
session[:mobile_view] = true
end
end
end
def count_requests
@request_count = Request.where(:recipient_id => current_user.person.id).count if current_user
end

View file

@ -90,7 +90,7 @@
#footer
= link_to t('.logged_in_as' :name => current_user.name), current_user.person
= link_to t('.logged_in_as', :name => current_user.name), current_user.person
%br
%br

View file

@ -11,6 +11,23 @@ class ActionView::LogSubscriber
alias :render_collection :render_template
end
module ActionDispatch
class ShowExceptions
private
def log_error(exception)
return unless logger
ActiveSupport::Deprecation.silence do
message = "event=error error_class=#{exception.class} error_message='#{exception.message}' "
message << "orig_error_message='#{exception.original_exception.message}'" if exception.respond_to?(:original_exception)
message << "annotated_source='#{exception.annoted_source_code.to_s}' " if exception.respond_to?(:annoted_source_code)
message << "app_backtrace='#{application_trace(exception).join(";")}'"
logger.fatal("\n\n#{message}\n\n")
end
end
end
end
class ActionController::LogSubscriber
def start_processing(event)
#noop

View file

@ -31,6 +31,19 @@ describe AspectsController do
it_should_behave_like "it overrides the logs on success"
end
describe "custom logging on error" do
class FakeError < RuntimeError; attr_accessor :original_exception; end
before do
@action = :index
@desired_error_message = "I love errors"
@error = FakeError.new(@desired_error_message)
@orig_error_message = "I loooooove nested errors!"
@error.original_exception = NoMethodError.new(@orig_error_message)
@controller.stub(:index).and_raise(@error)
end
it_should_behave_like "it overrides the logs on error"
end
describe "custom logging on redirect" do
before do
@action = :show

View file

@ -1,12 +1,18 @@
class FakeLogger
attr_accessor :infos
attr_accessor :lines
def initialize
self.infos = []
self.lines = []
end
def info line
self.infos << line
self.lines << line
end
def fatal line
self.lines << line
end
end
@ -51,6 +57,27 @@ shared_examples_for 'it overrides the logs on success' do
end
end
shared_examples_for 'it overrides the logs on error' do
before do
Rails.stub(:logger).and_return(FakeLogger.new)
begin
get @action, @action_params
rescue Exception => e
ActionDispatch::ShowExceptions.new(nil).send(:log_error,e)
end
@line = Rails.logger.lines.last
end
it 'logs the backtrace' do
@line.should =~ /app_backtrace=/
end
it 'logs the error message' do
@line.should =~ /error_message='#{@desired_error_message}'/
end
it 'logs the original error message, if it exists' do
@line.should =~ /orig_error_message='#{@orig_error_message}'/ if @orig_error_message
end
end
shared_examples_for 'it overrides the logs on redirect' do
before do
Rails.stub(:logger).and_return(FakeLogger.new)

View file

@ -2,11 +2,12 @@ module ActionController
module MobileFu
# These are various strings that can be found in mobile devices. Please feel free
# to add on to this list.
# removed ipad because ipad isn't a mobile device
MOBILE_USER_AGENTS = 'palm|blackberry|nokia|phone|midp|mobi|symbian|chtml|ericsson|minimo|' +
'audiovox|motorola|samsung|telit|upg1|windows ce|ucweb|astel|plucker|' +
'x320|x240|j2me|sgh|portable|sprint|docomo|kddi|softbank|android|mmp|' +
'pdxgw|netfront|xiino|vodafone|portalmmm|sagem|mot-|sie-|ipod|up\\.b|' +
'webos|amoi|novarra|cdm|alcatel|pocket|ipad|iphone|mobileexplorer|' +
'webos|amoi|novarra|cdm|alcatel|pocket|iphone|mobileexplorer|' +
'mobile'
def self.included(base)