Responsible for migrating plugins. PluginMigrations.Migrator.current_plugin indicates which plugin is currently being migrated
# File lib/desert/plugin_migrations/1.2/migrator.rb, line 33 def migrated current_plugin_version = self.class.current_version (1..current_plugin_version).to_a end
# File lib/desert/plugin_migrations/2.1/migrator.rb, line 20 def record_version_state_after_migrating(version) sm_table = self.class.schema_migrations_table_name if down? ActiveRecord::Base.connection.update("DELETE FROM #{sm_table} WHERE version = '#{version}' AND plugin_name = '#{current_plugin.name}'") else ActiveRecord::Base.connection.insert("INSERT INTO #{sm_table} (plugin_name, version) VALUES ('#{current_plugin.name}', '#{version}')") end end
# File lib/desert/plugin_migrations/1.2/migrator.rb, line 20 def set_schema_version(version) version = down? ? version.to_i - 1 : version.to_i if self.class.legacy_schema_table_exists? if ActiveRecord::Base.connection.select_one("SELECT version FROM #{self.class.schema_info_table_name} WHERE plugin_name = '#{current_plugin.name}'").nil? # We need to create the entry since it doesn't exist ActiveRecord::Base.connection.execute("INSERT INTO #{self.class.schema_info_table_name} (version, plugin_name) VALUES (#{version},'#{current_plugin.name}')") else ActiveRecord::Base.connection.update("UPDATE #{self.class.schema_info_table_name} SET version = #{version} WHERE plugin_name = '#{current_plugin.name}'") end end end
# File lib/desert/plugin_migrations/2.1/migrator.rb, line 15 def get_all_versions ActiveRecord::Base.connection.select_values("SELECT version FROM #{schema_migrations_table_name} where plugin_name='#{current_plugin.name}'").map(&:to_i).sort end
# File lib/desert/plugin_migrations/migrator.rb, line 27 def legacy_schema_table_exists? ActiveRecord::Base.connection.tables.include? schema_info_table_name end
Runs the migrations from a plugin, up (or down) to the version given
# File lib/desert/plugin_migrations/migrator.rb, line 11 def migrate_plugin(plugin, version = nil) self.current_plugin = plugin if ActiveRecord::Base.connection.respond_to?(:initialize_schema_migrations_table) ActiveRecord::Base.connection.initialize_schema_migrations_table end migrate(plugin.migration_path, version) end
# File lib/desert/plugin_migrations/migrator.rb, line 23 def schema_migrations_table_name ActiveRecord::Base.table_name_prefix + 'plugin_schema_migrations' + ActiveRecord::Base.table_name_suffix end