From 959f8576f2b70c35a2fd5c2c9563e695977f37b6 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 13 Oct 2010 16:20:09 +0300 Subject: Added foo:install:assets task that copies assets from plugins public directory to application's public directory This is the most simple and naive approach: just copy every files from engine to app. The only exception is when file has changed, in that case developer will be asked if he wants to rename the field. There is no need to make this task more sophisticated as 3.1 will be shipped with better assets handling and it will be the default way to handle things. --- railties/lib/rails/tasks/railties.rake | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'railties/lib/rails/tasks/railties.rake') diff --git a/railties/lib/rails/tasks/railties.rake b/railties/lib/rails/tasks/railties.rake index e08bd9687d..23d81e6671 100644 --- a/railties/lib/rails/tasks/railties.rake +++ b/railties/lib/rails/tasks/railties.rake @@ -17,4 +17,32 @@ namespace :railties do puts "Created symlink #{symlink_path} -> #{path}" end end + + namespace :install do + desc "Copies missing assets from Railties (e.g. plugins, engines). You can specify Railties to use with FROM=railtie1,railtie2" + task :assets => :rails_env do + require 'rails/generators/base' + Rails.application.initialize! + + to_load = ENV["FROM"].blank? ? :all : ENV["FROM"].split(",").map {|n| n.strip } + app_public_path = Rails.application.paths["public"].first + + Rails.application.railties.all do |railtie| + next unless to_load == :all || to_load.include?(railtie.railtie_name) + + if railtie.respond_to?(:paths) && (path = railtie.paths["public"].first) && + (assets_dir = railtie.config.compiled_asset_path) && File.exist?(path) + + Rails::Generators::Base.source_root(path) + copier = Rails::Generators::Base.new + Dir[File.join(path, "**/*")].each do |file| + relative = file.gsub(/^#{path}\//, '') + if File.file?(file) + copier.copy_file relative, File.join(app_public_path, assets_dir, relative) + end + end + end + end + end + end end -- cgit v1.2.3