Sha256: d8c4f092b3de6a8646ff7addba0fc21636c59cc15ead3d547a3ce8feda617683

Contents?: true

Size: 1.31 KB

Versions: 2

Compression:

Stored size: 1.31 KB

Contents

ActiveRecord::ConnectionAdapters::SchemaStatements.module_eval do
  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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
desert-0.2.1 lib/desert/plugin_migrations/extensions/1.0/schema_statements.rb
desert-0.2.0 lib/desert/plugin_migrations/extensions/1.0/schema_statements.rb