Added the RoR Login-Engine and activated it on the site.
[selectricity-live] / vendor / plugins / engines / lib / engines / migration_extensions.rb
diff --git a/vendor/plugins/engines/lib/engines/migration_extensions.rb b/vendor/plugins/engines/lib/engines/migration_extensions.rb
new file mode 100644 (file)
index 0000000..0653261
--- /dev/null
@@ -0,0 +1,53 @@
+#require 'active_record/connection_adapters/abstract/schema_statements'
+
+module ::ActiveRecord::ConnectionAdapters::SchemaStatements
+  alias :old_initialize_schema_information :initialize_schema_information
+  def initialize_schema_information
+    # create the normal schema stuff
+    old_initialize_schema_information
+    
+    # create the engines schema stuff.    
+    begin
+      execute "CREATE TABLE #{engine_schema_info_table_name} (engine_name #{type_to_sql(:string)}, version #{type_to_sql(:integer)})"
+    rescue ActiveRecord::StatementInvalid
+      # Schema has been initialized
+    end
+  end
+
+  def engine_schema_info_table_name
+    ActiveRecord::Base.wrapped_table_name "engine_schema_info"
+  end
+end
+
+
+require 'breakpoint'
+module ::Engines
+  class EngineMigrator < ActiveRecord::Migrator
+
+    # We need to be able to set the 'current' engine being migrated.
+    cattr_accessor :current_engine
+
+    class << self
+
+      def schema_info_table_name
+        ActiveRecord::Base.wrapped_table_name "engine_schema_info"
+      end
+
+      def current_version
+        result = ActiveRecord::Base.connection.select_one("SELECT version FROM #{schema_info_table_name} WHERE engine_name = '#{current_engine.name}'")
+        if result
+          result["version"].to_i
+        else
+          # There probably isn't an entry for this engine in the migration info table.
+          # We need to create that entry, and set the version to 0
+          ActiveRecord::Base.connection.execute("INSERT INTO #{schema_info_table_name} (version, engine_name) VALUES (0,'#{current_engine.name}')")      
+          0
+        end
+      end    
+    end
+
+    def set_schema_version(version)
+      ActiveRecord::Base.connection.update("UPDATE #{self.class.schema_info_table_name} SET version = #{down? ? version.to_i - 1 : version.to_i} WHERE engine_name = '#{self.current_engine.name}'")
+    end
+  end
+end

Benjamin Mako Hill || Want to submit a patch?