Sha256: 96832a2c9d35219adc25923670767562c3c6a1bb9e681e5cc05cca4bf008b540
Contents?: true
Size: 1.25 KB
Versions: 3
Compression:
Stored size: 1.25 KB
Contents
class MigrationTestGenerator < Rails::Generator::NamedBase def manifest schema_version = class_name.to_i raise "Invalid schema version '#{class_name}'" unless schema_version > 0 schema_version_string = schema_version.to_s.rjust(3,'0') migration = Dir["db/migrate/#{schema_version_string}*.rb"].first raise "No migration found for schema version #{schema_version_string}" unless migration migration_name = File.basename(migration,'.rb').sub(/^\d+_/,'') test_class_name = migration_name.camelize + "Test" test_file = "test/migration/#{schema_version_string}_#{migration_name}_test.rb" record do |m| m.directory 'test/migration' m.template 'migration_test.rb', test_file, :assigns => { :test_class_name => test_class_name, :migration_name => migration_name, :schema_version => schema_version, :previous_schema_version => previous_schema_version(schema_version_string) } end end def previous_schema_version(current_version_string) versions = Dir["db/migrate/*.rb"].map do |migration_file| migration_file.match(/db\/migrate\/(\d+)_.*\.rb/)[1] end.sort prev_index = versions.index(current_version_string) - 1 prev_index < 0 ? -1 : versions[prev_index].to_i end end
Version data entries
3 entries across 3 versions & 2 rubygems