diff --git config/configuration.yml.example config/configuration.yml.example index 3522ef6..8e7f9d8 100644 --- config/configuration.yml.example +++ config/configuration.yml.example @@ -75,6 +75,15 @@ default: # attachments_storage_path: D:/redmine/files attachments_storage_path: + # Absolute path to the directory where plugins are stored. + # The default is the 'plugins' directory in your Redmine instance. + # Your Redmine instance needs to have write permission on this + # directory. + # Examples: + # plugins_path: /var/redmine/plugins + # plugins_path: D:/redmine/plugins + plugins_path: + # Configuration of the autologin cookie. # autologin_cookie_name: the name of the cookie (default: autologin) # autologin_cookie_path: the cookie path (default: /) diff --git lib/generators/redmine_plugin/redmine_plugin_generator.rb lib/generators/redmine_plugin/redmine_plugin_generator.rb index 5623663..a9d7015 100644 --- lib/generators/redmine_plugin/redmine_plugin_generator.rb +++ lib/generators/redmine_plugin/redmine_plugin_generator.rb @@ -7,7 +7,12 @@ class RedminePluginGenerator < Rails::Generators::NamedBase super @plugin_name = file_name.underscore @plugin_pretty_name = plugin_name.titleize - @plugin_path = "plugins/#{plugin_name}" + if Redmine::Configuration['plugins_path'].nil? + @plugin_path = File.join(Rails.root, 'plugins', plugin_name) + else + @plugin_path = File.join(Redmine::Configuration['plugins_path'], plugin_name) + end + puts @plugin_path end def copy_templates diff --git lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb index 8351ce6..231b688 100644 --- lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb +++ lib/generators/redmine_plugin_controller/redmine_plugin_controller_generator.rb @@ -9,7 +9,11 @@ class RedminePluginControllerGenerator < Rails::Generators::NamedBase super @plugin_name = file_name.underscore @plugin_pretty_name = plugin_name.titleize - @plugin_path = "plugins/#{plugin_name}" + if Redmine::Configuration['plugins_path'].nil? + @plugin_path = File.join(Rails.root, 'plugins', plugin_name) + else + @plugin_path = File.join(Redmine::Configuration['plugins_path'], plugin_name) + end @controller_class = controller.camelize end diff --git lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb index 2e5f031..bea9b68 100644 --- lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb +++ lib/generators/redmine_plugin_model/redmine_plugin_model_generator.rb @@ -14,7 +14,11 @@ class RedminePluginModelGenerator < Rails::Generators::NamedBase super @plugin_name = file_name.underscore @plugin_pretty_name = plugin_name.titleize - @plugin_path = "plugins/#{plugin_name}" + if Redmine::Configuration['plugins_path'].nil? + @plugin_path = File.join(Rails.root, 'plugins', plugin_name) + else + @plugin_path = File.join(Redmine::Configuration['plugins_path'], plugin_name) + end @model_class = model.camelize @table_name = @model_class.tableize @migration_filename = "create_#{@table_name}" diff --git lib/redmine/plugin.rb lib/redmine/plugin.rb index 503c3db..9ab364b 100644 --- lib/redmine/plugin.rb +++ lib/redmine/plugin.rb @@ -44,7 +44,7 @@ module Redmine #:nodoc: # When rendered, the plugin settings value is available as the local variable +settings+ class Plugin cattr_accessor :directory - self.directory = File.join(Rails.root, 'plugins') + self.directory = Redmine::Configuration['plugins_path'] || File.join(Rails.root, 'plugins') cattr_accessor :public_directory self.public_directory = File.join(Rails.root, 'public', 'plugin_assets')