1
0
mirror of https://github.com/meineerde/redmine.git synced 2026-01-31 11:37:14 +00:00

Fix RuntimeError on reload! in the Rails console (#38155).

Patch by Thomas Löber (@tloeber).


git-svn-id: https://svn.redmine.org/redmine/trunk@22681 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Go MAEDA 2024-02-05 13:39:02 +00:00
parent 609ddf2577
commit 61e223f698
6 changed files with 11 additions and 6 deletions

View File

@ -84,6 +84,7 @@ module Redmine
def permission(name, hash, options={})
@permissions ||= []
@permissions.reject! {|p| p.name == name}
options[:project_module] = @project_module
@permissions << Permission.new(name, hash, options)
end

View File

@ -202,7 +202,7 @@ module Redmine
end
end
ASSET_URL_PATTERN = /(url\(\s*["']?([^"'\s)]+)\s*["']?\s*\))/
ASSET_URL_PATTERN = /(url\(\s*["']?([^"'\s)]+)\s*["']?\s*\))/ unless defined? ASSET_URL_PATTERN
def convert_path(input, conversion)
input.gsub(ASSET_URL_PATTERN) do |matched|

View File

@ -292,6 +292,8 @@ module Redmine
target_root = @menu_items.root
end
target_root.children.reject! {|item| item.name == name}
# menu item position
if first = options.delete(:first)
target_root.prepend(MenuItem.new(name, url, options))
@ -379,8 +381,6 @@ module Redmine
# Adds a child at given position
def add_at(child, position)
raise "Child already added" if find {|node| node.name == child.name}
@children = @children.insert(position, child)
child.parent = self
child

View File

@ -125,7 +125,7 @@ module Redmine
# Warn for potential settings[:partial] collisions
if p.configurable?
partial = p.settings[:partial]
if @used_partials[partial]
if @used_partials[partial] && @used_partials[partial] != p.id
Rails.logger.warn(
"WARNING: settings partial '#{partial}' is declared in '#{p.id}' plugin " \
"but it is already used by plugin '#{@used_partials[partial]}'. " \

View File

@ -28,6 +28,7 @@ module Redmine
# Add a new SCM adapter and repository
def add(scm_name)
@scms ||= []
@scms.delete(scm_name)
@scms << scm_name
end

View File

@ -34,7 +34,6 @@ module Redmine
def register(name, *args)
options = args.last.is_a?(Hash) ? args.pop : {}
name = name.to_s
raise ArgumentError, "format name '#{name}' is already taken" if @@formatters[name]
formatter, helper, parser =
if args.any?
@ -44,12 +43,16 @@ module Redmine
end
raise "A formatter class is required" if formatter.nil?
@@formatters[name] = {
entry = {
:formatter => formatter,
:helper => helper,
:html_parser => parser,
:label => options[:label] || name.humanize
}
if @@formatters[name] && @@formatters[name] != entry
raise ArgumentError, "format name '#{name}' is already taken"
end
@@formatters[name] = entry
end
def formatter