diff --git a/.gitignore b/.gitignore index 557709a..b97aacc 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,5 @@ /Gemfile.lock /Gemfile.local +*.rb~ +Gemfile~ diff --git a/Gemfile b/Gemfile index da7e859..ce7295e 100644 --- a/Gemfile +++ b/Gemfile @@ -26,7 +26,9 @@ platforms :mri, :mingw do # RMagick 2 supports ruby 1.9 # RMagick 1 would be fine for ruby 1.8 but Bundler does not support # different requirements for the same gem on different platforms - gem "rmagick", ">= 2.0.0" + gem "rmagick", ">= 2.0.0"'\ + # Threadsafe modifications, done on Java, suggest an alternate inclusion of rmagick as still commented below + # gem PLATFORM == 'java' ? 'rmagick4j' : 'rmagick' end # Optional Markdown support, not for JRuby diff --git a/app/controllers/gantts_controller.rb b/app/controllers/gantts_controller.rb index 7f68437..796bda5 100644 --- a/app/controllers/gantts_controller.rb +++ b/app/controllers/gantts_controller.rb @@ -15,6 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Threadsafe Include +require 'redmine/export/pdf' + class GanttsController < ApplicationController menu_item :gantt before_filter :find_optional_project diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index de346c5..8961f0c 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -15,6 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Threadsafe Include +require 'redmine/export/pdf' + class IssuesController < ApplicationController menu_item :new_issue, :only => [:new, :create] default_search_scope :issues diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index 59d1d2d..573f293 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -15,6 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Threadsafe Include +require 'redmine/views/my_page_block' + class MyController < ApplicationController before_filter :require_login # let user change user's password when user has to diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 9cb5b96..f9c6cfc 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -19,6 +19,12 @@ require 'forwardable' require 'cgi' +# Threadsafe Include +require 'redmine/pagination' +require 'redmine/I18n' +require 'redmine/wiki_formatting' +require 'gravatar' + module ApplicationHelper include Redmine::WikiFormatting::Macros::Definitions diff --git a/app/models/custom_field.rb b/app/models/custom_field.rb index 48ef2c7..1ad9048 100644 --- a/app/models/custom_field.rb +++ b/app/models/custom_field.rb @@ -15,6 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Threadsafe include +require 'redmine/subclass_factory' + class CustomField < ActiveRecord::Base include Redmine::SubclassFactory diff --git a/app/models/issue.rb b/app/models/issue.rb index 1513f76..3a3373f 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -15,10 +15,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# Additional includes for threadsafe mode activated in Rails 4 -require 'redmine/safe_attributes' -require 'redmine/utils' - class Issue < ActiveRecord::Base include Redmine::SafeAttributes include Redmine::Utils::DateCalculation diff --git a/app/models/message.rb b/app/models/message.rb index 576be47..42777a4 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -15,6 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Threadsafe include +require 'redmine/safe_attributes' + class Message < ActiveRecord::Base include Redmine::SafeAttributes belongs_to :board diff --git a/app/models/news.rb b/app/models/news.rb index b86e3f6..5528a99 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -15,6 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Threadsafe include +require 'redmine/safe_attributes' + class News < ActiveRecord::Base include Redmine::SafeAttributes belongs_to :project diff --git a/config/application.rb b/config/application.rb index 856cc07..b16263d 100644 --- a/config/application.rb +++ b/config/application.rb @@ -15,16 +15,12 @@ module RedmineApp # Application configuration should go into files in config/initializers # -- all .rb files in that directory are automatically loaded. - # Custom directories with classes and modules you want to be autoloadable. + # Custom directories with classes and modules you want to be autoloadable. + # uncommented in Threadsafe modifitation and more recent Redmine config.autoload_paths += %W(#{config.root}/lib) - # Earger load code for threadsafe mode - config.eager_load_paths += ["#{config.root}/lib"] - config.eager_load_paths += ["#{config.root}/plugins"] - - # Enable threaded mode + # Threadsafe additions config.threadsafe! - # Allow rake tasks to autoload models in thread safe mode, more info at http://stackoverflow.com/a/4880253 config.dependency_loading = true if $rails_rake_task diff --git a/config/initializers/00-core_plugins.rb b/config/initializers/00-core_plugins.rb index 95c7f3f..3273d1d 100644 --- a/config/initializers/00-core_plugins.rb +++ b/config/initializers/00-core_plugins.rb @@ -5,9 +5,12 @@ Dir.glob(File.join(Rails.root, "lib/plugins/*")).sort.each do |directory| if File.directory?(lib) $:.unshift lib ActiveSupport::Dependencies.autoload_paths += [lib] + # Threadsafe addition + config.eager_load_paths += [lib] end initializer = File.join(directory, "init.rb") if File.file?(initializer) + # Threadsafe modification deleted the line below initially config = config = RedmieApp::Application.config, but I am leaving it for now config = RedmineApp::Application.config eval(File.read(initializer), binding, initializer) end diff --git a/config/initializers/10-patches.rb b/config/initializers/10-patches.rb index 7247d52..fc20429 100644 --- a/config/initializers/10-patches.rb +++ b/config/initializers/10-patches.rb @@ -1,4 +1,6 @@ require 'active_record' +# Threadsafe addition +require 'redmine/I18n' module ActiveRecord class Base diff --git a/lib/SVG/Graph/Schedule.rb b/lib/SVG/Graph/Schedule.rb index 70bb519..855125e 100644 --- a/lib/SVG/Graph/Schedule.rb +++ b/lib/SVG/Graph/Schedule.rb @@ -1,4 +1,5 @@ require 'SVG/Graph/Plot' +# Threadsafe had deleted the below include, but I don't see why and am keeping it require 'parsedate' module SVG @@ -159,6 +160,9 @@ module SVG if im3 == 0 y << data[:data][i] else + # Threadsafe had a different line + # t = DateTime.parse( data[:data][i] ).to_time + # but I am not including it arr = ParseDate.parsedate( data[:data][i] ) t = Time.local( *arr[0,6].compact ) (im3 == 1 ? x_start : x_end) << t.to_i diff --git a/lib/generators/redmine_plugin/redmine_plugin_generator.rb b/lib/generators/redmine_plugin/redmine_plugin_generator.rb index 5623663..964b4a1 100644 --- a/lib/generators/redmine_plugin/redmine_plugin_generator.rb +++ b/lib/generators/redmine_plugin/redmine_plugin_generator.rb @@ -1,3 +1,7 @@ +# Threadsafe include additions +require 'rails' +require 'rails/generators' + class RedminePluginGenerator < Rails::Generators::NamedBase source_root File.expand_path("../templates", __FILE__) diff --git a/lib/plugins/acts_as_tree/init.rb b/lib/plugins/acts_as_tree/init.rb index 0901ddb..8dfc315 100644 --- a/lib/plugins/acts_as_tree/init.rb +++ b/lib/plugins/acts_as_tree/init.rb @@ -1 +1,3 @@ +# Threadsafe addition +require 'active_record/acts/tree' ActiveRecord::Base.send :include, ActiveRecord::Acts::Tree diff --git a/lib/plugins/awesome_nested_set/lib/awesome_nested_set.rb b/lib/plugins/awesome_nested_set/lib/awesome_nested_set.rb index a3df9e4..c2942a3 100644 --- a/lib/plugins/awesome_nested_set/lib/awesome_nested_set.rb +++ b/lib/plugins/awesome_nested_set/lib/awesome_nested_set.rb @@ -1,3 +1,7 @@ +# FIXME : Not sure if still "compatibility" in Awesome Nested Set +# Threadsafe include addition (will leave commented for now) +# require 'awesome_nested_set/compatability' + require 'awesome_nested_set/awesome_nested_set' require 'active_record' ActiveRecord::Base.send :extend, CollectiveIdea::Acts::NestedSet @@ -5,4 +9,4 @@ ActiveRecord::Base.send :extend, CollectiveIdea::Acts::NestedSet if defined?(ActionView) require 'awesome_nested_set/helper' ActionView::Base.send :include, CollectiveIdea::Acts::NestedSet::Helper -end \ No newline at end of file +end diff --git a/lib/plugins/open_id_authentication/generators/open_id_authentication_tables/open_id_authentication_tables_generator.rb b/lib/plugins/open_id_authentication/generators/open_id_authentication_tables/open_id_authentication_tables_generator.rb index 6f78afc..d2c02fd 100644 --- a/lib/plugins/open_id_authentication/generators/open_id_authentication_tables/open_id_authentication_tables_generator.rb +++ b/lib/plugins/open_id_authentication/generators/open_id_authentication_tables/open_id_authentication_tables_generator.rb @@ -1,3 +1,7 @@ +# Threadsafe include additions +require 'rails' +require 'rails/generators' + class OpenIdAuthenticationTablesGenerator < Rails::Generator::NamedBase def initialize(runtime_args, runtime_options = {}) super diff --git a/lib/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/upgrade_open_id_authentication_tables_generator.rb b/lib/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/upgrade_open_id_authentication_tables_generator.rb index 02fddd7..0dccae5 100644 --- a/lib/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/upgrade_open_id_authentication_tables_generator.rb +++ b/lib/plugins/open_id_authentication/generators/upgrade_open_id_authentication_tables/upgrade_open_id_authentication_tables_generator.rb @@ -1,3 +1,6 @@ +# Threadsafe include addition +require 'rails/generators' + class UpgradeOpenIdAuthenticationTablesGenerator < Rails::Generator::NamedBase def initialize(runtime_args, runtime_options = {}) super diff --git a/lib/plugins/open_id_authentication/init.rb b/lib/plugins/open_id_authentication/init.rb index 84ec11f..5d82256 100644 --- a/lib/plugins/open_id_authentication/init.rb +++ b/lib/plugins/open_id_authentication/init.rb @@ -1,3 +1,7 @@ +# Threadsafe include additions +require 'rails/all' +require 'rbconfig' + if Rails.version < '3' config.gem 'rack-openid', :lib => 'rack/openid', :version => '>=0.2.1' end diff --git a/lib/plugins/open_id_authentication/lib/open_id_authentication/request.rb b/lib/plugins/open_id_authentication/lib/open_id_authentication/request.rb index e0cc8e3..407248f 100644 --- a/lib/plugins/open_id_authentication/lib/open_id_authentication/request.rb +++ b/lib/plugins/open_id_authentication/lib/open_id_authentication/request.rb @@ -1,3 +1,6 @@ +require 'action_controller' +require 'action_controller/deprecated' + module OpenIdAuthentication module Request def self.included(base) diff --git a/lib/plugins/rfpdf/lib/tcpdf.rb b/lib/plugins/rfpdf/lib/tcpdf.rb index d754eb8..0b23a4d 100644 --- a/lib/plugins/rfpdf/lib/tcpdf.rb +++ b/lib/plugins/rfpdf/lib/tcpdf.rb @@ -33,6 +33,11 @@ require 'tempfile' require 'core/rmagick' +# Threadsafe additions +require 'core/rfpdf' +require 'rfpdf/math' + + # # TCPDF Class. diff --git a/lib/redmine/thumbnail.rb b/lib/redmine/thumbnail.rb index 804103d..73ca666 100644 --- a/lib/redmine/thumbnail.rb +++ b/lib/redmine/thumbnail.rb @@ -16,6 +16,9 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. require 'fileutils' +# Threadsafe includes +require 'redmine/utils' +require 'redmine/configuration' module Redmine module Thumbnail diff --git a/lib/redmine/wiki_formatting/textile/formatter.rb b/lib/redmine/wiki_formatting/textile/formatter.rb index 5ca8c05..30aac06 100644 --- a/lib/redmine/wiki_formatting/textile/formatter.rb +++ b/lib/redmine/wiki_formatting/textile/formatter.rb @@ -17,6 +17,8 @@ require 'redcloth3' require 'digest/md5' +# Threadsafe include addition +require 'redmine/wiki_formatting' module Redmine module WikiFormatting diff --git a/lib/redmine/wiki_formatting/textile/helper.rb b/lib/redmine/wiki_formatting/textile/helper.rb index 8674f14..bc2f1a8 100644 --- a/lib/redmine/wiki_formatting/textile/helper.rb +++ b/lib/redmine/wiki_formatting/textile/helper.rb @@ -15,6 +15,9 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# Threadsafe include addition +require 'redmine/wiki_formatting' + module Redmine module WikiFormatting module Textile