Added the RoR Login-Engine and activated it on the site.
[selectricity-live] / vendor / plugins / engines / tasks / engines.rake
diff --git a/vendor/plugins/engines/tasks/engines.rake b/vendor/plugins/engines/tasks/engines.rake
new file mode 100644 (file)
index 0000000..21bb763
--- /dev/null
@@ -0,0 +1,176 @@
+module Engines
+  module RakeTasks
+    def self.all_engines
+      # An engine is informally defined as any subdirectory in vendor/plugins
+      # which ends in '_engine', '_bundle', or contains an 'init_engine.rb' file.
+      engine_base_dirs = ['vendor/plugins']
+      # The engine root may be different; if possible try to include
+      # those directories too
+      if Engines.const_defined?(:CONFIG)
+        engine_base_dirs << Engines::CONFIG[:root]
+      end
+      engine_base_dirs.map! {|d| [d + '/*_engine/*', 
+                                  d + '/*_bundle/*',
+                                  d + '/*/init_engine.rb']}.flatten!
+      engine_dirs = FileList.new(*engine_base_dirs)
+      engine_dirs.map do |engine| 
+        File.basename(File.dirname(engine))
+      end.uniq       
+    end
+  end
+end
+
+
+namespace :engines do
+  desc "Display version information about active engines"
+  task :info => :environment do
+    if ENV["ENGINE"]
+      e = Engines.get(ENV["ENGINE"])
+      header = "Details for engine '#{e.name}':"
+      puts header
+      puts "-" * header.length
+      puts "Version: #{e.version}"
+      puts "Details: #{e.info}"
+    else
+      puts "Engines plugin: #{Engines.version}"
+      Engines.each do |e|
+        puts "#{e.name}: #{e.version}"
+      end
+    end
+  end
+end
+
+namespace :db do  
+  namespace :fixtures do
+    namespace :engines do
+      
+      desc "Load plugin/engine fixtures into the current environment's database."
+      task :load => :environment do
+        require 'active_record/fixtures'
+        ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
+        plugin = ENV['ENGINE'] || '*'
+        Dir.glob(File.join(RAILS_ROOT, 'vendor', 'plugins', plugin, 'test', 'fixtures', '*.yml')).each do |fixture_file|
+          Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*'))
+        end
+      end
+      
+    end
+  end
+
+
+  namespace :migrate do
+    
+    desc "Migrate all engines. Target specific version with VERSION=x, specific engine with ENGINE=x"
+    task :engines => :environment do
+      engines_to_migrate = ENV["ENGINE"] ? [Engines.get(ENV["ENGINE"])].compact : Engines.active
+      if engines_to_migrate.empty?
+        puts "Couldn't find an engine called '#{ENV["ENGINE"]}'"
+      else
+        if ENV["VERSION"] && !ENV["ENGINE"]
+          # ignore the VERSION, since it makes no sense in this context; we wouldn't
+          # want to revert ALL engines to the same version because of a misttype
+          puts "Ignoring the given version (#{ENV["VERSION"]})."
+          puts "To control individual engine versions, use the ENGINE=<engine> argument"
+        else
+          engines_to_migrate.each do |engine| 
+            Engines::EngineMigrator.current_engine = engine
+            migration_directory = File.join(engine.root, 'db', 'migrate')
+            if File.exist?(migration_directory)
+              puts "Migrating engine '#{engine.name}'"
+              Engines::EngineMigrator.migrate(migration_directory, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
+            else
+              puts "The db/migrate directory for engine '#{engine.name}' appears to be missing."
+              puts "Should be: #{migration_directory}"
+            end
+          end
+          if ActiveRecord::Base.schema_format == :ruby && !engines_to_migrate.empty?
+            Rake::Task[:db_schema_dump].invoke
+          end
+        end
+      end
+    end
+
+    namespace :engines do
+      Engines::RakeTasks.all_engines.each do |engine_name|
+        desc "Migrate the '#{engine_name}' engine. Target specific version with VERSION=x"
+        task engine_name => :environment do
+          ENV['ENGINE'] = engine_name; Rake::Task['db:migrate:engines'].invoke
+        end
+      end
+    end
+    
+  end
+end
+
+
+# this is just a rip-off from the plugin stuff in railties/lib/tasks/documentation.rake, 
+# because the default plugindoc stuff doesn't support subdirectories like <engine>/app or
+# <engine>/component.
+namespace :doc do
+
+  desc "Generate documation for all installed engines"
+  task :engines => Engines::RakeTasks.all_engines.map {|engine| "doc:engines:#{engine}"}
+
+  namespace :engines do
+    # Define doc tasks for each engine
+    Engines::RakeTasks.all_engines.each do |engine_name|
+      desc "Generation documentation for the '#{engine_name}' engine"
+      task engine_name => :environment do
+        engine_base   = "vendor/plugins/#{engine_name}"
+        options       = []
+        files         = Rake::FileList.new
+        options << "-o doc/plugins/#{engine_name}"
+        options << "--title '#{engine_name.titlecase} Documentation'"
+        options << '--line-numbers --inline-source'
+        options << '--all' # include protected methods
+        options << '-T html'
+
+        files.include("#{engine_base}/lib/**/*.rb")
+        files.include("#{engine_base}/app/**/*.rb") # include the app directory
+        files.include("#{engine_base}/components/**/*.rb") # include the components directory
+        if File.exists?("#{engine_base}/README")
+          files.include("#{engine_base}/README")    
+          options << "--main '#{engine_base}/README'"
+        end
+        files.include("#{engine_base}/CHANGELOG") if File.exists?("#{engine_base}/CHANGELOG")
+
+        options << files.to_s
+
+        sh %(rdoc #{options * ' '})
+      end
+    end
+  end
+end
+
+namespace :test do
+  desc "Run the engine tests in vendor/plugins/**/test (or specify with ENGINE=name)"
+  # NOTE: we're using the Rails 1.0 non-namespaced task here, just to maintain
+  # compatibility with Rails 1.0
+  # TODO: make this work with Engines.config(:root)
+  
+  namespace :engines do
+    Engines::RakeTasks.all_engines.each do |engine_name|
+      desc "Run the engine tests for '#{engine_name}'"
+      Rake::TestTask.new(engine_name => :prepare_test_database) do |t|
+        t.libs << 'test'
+        t.pattern = "vendor/plugins/#{engine_name}/test/**/*_test.rb"
+        t.verbose = true
+      end
+    end    
+  end
+  
+  Rake::TestTask.new(:engines => [:warn_about_multiple_engines_testing, :prepare_test_database]) do |t|
+    t.libs << "test"
+    engines = ENV['ENGINE'] || '**'
+    t.pattern = "vendor/plugins/#{engines}/test/**/*_test.rb"
+    t.verbose = true
+  end
+  
+  task :warn_about_multiple_engines_testing do
+    puts %{-~============== A Moste Polite Warninge ==================~-
+You may experience issues testing multiple engines at once. 
+Please test engines individual for the moment.
+-~===============( ... as you were ... )===================~-
+}
+  end
+end
\ No newline at end of file

Benjamin Mako Hill || Want to submit a patch?