Sha256: ce2c9dd0ada6b5551ad7be1e07019436c27b859a2966cd082008f237bc00039b

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

module ActiveRecord #:nodoc:
  module ConnectionAdapters #:nodoc:
    module SchemaStatements #:nodoc:
      def initialize_schema_information_with_plugins
        initialize_schema_information_without_plugins
        
        begin
          execute "CREATE TABLE #{PluginAWeek::PluginMigrations::Migrator.schema_info_table_name} (plugin_name #{type_to_sql(:string)}, version #{type_to_sql(:integer)})"
        rescue ActiveRecord::StatementInvalid
          # Schema has been initialized
        end
      end
      alias_method_chain :initialize_schema_information, :plugins
      
      def dump_schema_information_with_plugins
        schema_information = []
        
        dump = dump_schema_information_without_plugins
        schema_information << dump if dump
        
        begin
          plugins = ActiveRecord::Base.connection.select_all("SELECT * FROM #{PluginAWeek::PluginMigrations::Migrator.schema_info_table_name}")
          plugins.each do |plugin|
            if (version = plugin['version'].to_i) > 0
              plugin_name = ActiveRecord::Base.quote_value(plugin['plugin_name'])
              schema_information << "INSERT INTO #{PluginAWeek::PluginMigrations::Migrator.schema_info_table_name} (plugin_name, version) VALUES (#{plugin_name}, #{version})"
            end
          end
        rescue ActiveRecord::StatementInvalid 
          # No Schema Info
        end
        
        schema_information.join(";\n")
      end
      alias_method_chain :dump_schema_information, :plugins
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
desert-0.1.1 lib/desert/plugin_migrations/extensions/schema_statements.rb