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