module RedminePluginAssetPipeline::Infectors::Redmine::Plugin
Monkey Patch for Redmine::Plugin
move assets from all plugins to separate directory
Public Instance Methods
mirror_assets_to_private()
click to toggle source
# File lib/redmine_plugin_asset_pipeline/infectors/redmine/plugin.rb, line 27 def mirror_assets_to_private source = assets_directory destination = private_directory unless File.exist?(self.class.private_directory_base) FileUtils.mkdir_p(self.class.private_directory_base) end FileUtils.rm_rf(destination) if File.exist?(destination) return unless File.directory?(source) if RedmineApp::Application.config.assets.compile FileUtils.ln_s(source, destination) if File.exist?(source) else source_files = Dir[source + '/**/*'] source_dirs = source_files.select { |d| File.directory?(d) } source_files -= source_dirs unless source_files.empty? base_target_dir = File.join(destination, File.dirname(source_files.first).gsub(source, '')) begin FileUtils.mkdir_p(base_target_dir) rescue StandardError => e raise "Could not create directory #{base_target_dir}: " + e.message end end source_dirs.each do |dir| # strip down these paths so we have simple, relative paths we can # add to the destination target_dir = File.join(destination, dir.gsub(source, '')) begin FileUtils.mkdir_p(target_dir) rescue StandardError => e raise "Could not create directory #{target_dir}: " + e.message end end source_files.each do |file| begin target = File.join(destination, file.gsub(source, '')) unless File.exist?(target) && FileUtils.identical?(file, target) FileUtils.cp(file, target) end rescue StandardError => e raise "Could not copy #{file} to #{target}: " + e.message end end end end
private_directory()
click to toggle source
# File lib/redmine_plugin_asset_pipeline/infectors/redmine/plugin.rb, line 23 def private_directory File.join(self.class.private_directory_base, id.to_s) end