lib/exodus/migrations/migration.rb in exodus-1.0.1 vs lib/exodus/migrations/migration.rb in exodus-1.0.2

- old
+ new

@@ -1,11 +1,13 @@ module Exodus class Migration include MongoMapper::Document + set_collection_name 'migrations' + UP = 'up' DOWN = 'down' - @migrations_with_args = [] + @migrations = [] timestamps! key :description, String key :status_complete, Integer, :default => 1 @@ -19,14 +21,19 @@ # Overides #inherited to have an easy and reliable way to find all migrations # Migrations need to have embedded callbacks on depending on the MM's version def inherited(klass) klass.embedded_callbacks_on if defined?(MongoMapper::Plugins::EmbeddedCallbacks::ClassMethods) #MongoMapper version compatibility klass.migration_number = 0 - @migrations_with_args << [klass] + @migrations << [klass] super(klass) end + # Sorts all migrations by migration number + def sort_all + @migrations.sort_by {|migration,args| migration.migration_number } + end + # Using a list of migrations # Formats and overrides migrations without arguments using ones that have given arguments # Removes duplicates # migrations: list of migrations => [[MyMigration, {:my_args => 'some_args'}]] def load_all(migrations) @@ -34,19 +41,19 @@ migrations.each do |migration, args| if migration && args formated_migration = format(migration, args) migration, args = formated_migration - unless @migrations_with_args.include?(formated_migration) - @migrations_with_args.delete_if {|loaded_migration, loaded_args| migration == loaded_migration && (loaded_args.nil? || loaded_args.empty?) } - @migrations_with_args << formated_migration + unless @migrations.include?(formated_migration) + @migrations.delete_if {|loaded_migration, loaded_args| migration == loaded_migration && (loaded_args.nil? || loaded_args.empty?) } + @migrations << formated_migration end end end end - @migrations_with_args + @migrations end # Using a list of migrations formats them and removes duplicates # migrations: list of migrations => [[MyMigration, {:my_args => 'some_args'}]] def load_custom(migrations) @@ -63,10 +70,10 @@ # Prints in the console all migrations class with their name and description def list puts "\n Migration n#: \t\t Name: \t\t\t\t Description:" puts '-' * 100, "\n" - @migrations_with_args.map do|migration, args| + Migration.sort_all.map do|migration, args| m = migration.new puts "\t#{migration.migration_number} \t\t #{migration.name} \t\t #{m.description}" end puts "\n\n" \ No newline at end of file