mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
Merge branch 'master' of github.com:discourse/discourse
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user