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

This commit is contained in:
Sam Saffron
2013-02-12 13:45:24 +11:00
27 changed files with 443 additions and 293 deletions

View File

@@ -21,9 +21,9 @@ module CurrentUser
@not_logged_in = session[:current_user_id].blank?
if @current_user
@current_user.update_last_seen!
if @current_user.ip_address != request.remote_ip
if (@current_user.ip_address != request.remote_ip) and request.remote_ip.present?
@current_user.ip_address = request.remote_ip
User.exec_sql('update users set ip_address = ? where id = ?', request.remote_ip, @current_user.id)
@current_user.update_column(:ip_address, request.remote_ip)
end
end
@current_user

View File

@@ -9,10 +9,21 @@ class DiscoursePluginRegistry
attr_accessor :stylesheets
end
def register_js(filename, options={})
self.class.javascripts ||= Set.new
self.class.server_side_javascripts ||= Set.new
# Default accessor values
#
def self.stylesheets
@stylesheets ||= Set.new
end
def self.javascripts
@javascripts ||= Set.new
end
def self.server_side_javascripts
@server_side_javascripts ||= Set.new
end
def register_js(filename, options={})
# If we have a server side option, add that too.
self.class.server_side_javascripts << options[:server_side] if options[:server_side].present?
@@ -20,12 +31,11 @@ class DiscoursePluginRegistry
end
def register_css(filename)
self.class.stylesheets ||= Set.new
self.class.stylesheets << filename
end
def stylesheets
self.class.stylesheets || Set.new
self.class.stylesheets
end
def register_archetype(name, options={})
@@ -33,17 +43,17 @@ class DiscoursePluginRegistry
end
def server_side_javascripts
self.class.javascripts || Set.new
self.class.javascripts
end
def javascripts
self.class.javascripts || Set.new
self.class.javascripts
end
def self.clear
self.stylesheets = Set.new
self.server_side_javascripts = Set.new
self.javascripts = Set.new
self.stylesheets = nil
self.server_side_javascripts = nil
self.javascripts = nil
end
def self.setup(plugin_class)
@@ -52,6 +62,4 @@ class DiscoursePluginRegistry
plugin.setup
end
end

View File

@@ -15,6 +15,24 @@ class ActiveRecord::Base
ActiveRecord::Base.exec_sql(*args)
end
# Executes the given block +retries+ times (or forever, if explicitly given nil),
# catching and retrying SQL Deadlock errors.
#
# Thanks to: http://stackoverflow.com/a/7427186/165668
#
def self.retry_lock_error(retries=5, &block)
begin
yield
rescue ActiveRecord::StatementInvalid => e
if e.message =~ /Deadlock found when trying to get lock/ and (retries.nil? || retries > 0)
retry_lock_error(retries ? retries - 1 : nil, &block)
else
raise e
end
end
end
# Support for psql. If we want to support multiple RDBMs in the future we can
# split this.
def exec_sql_row_count(*args)