Class: I18n::Migrations::MigrationFactory
- Inherits:
-
Object
- Object
- I18n::Migrations::MigrationFactory
- Defined in:
- lib/i18n/migrations/migration_factory.rb
Defined Under Namespace
Classes: Translations
Instance Method Summary collapse
- #all_versions ⇒ Object
- #get_migration(version:) ⇒ Object
-
#initialize(migration_dir) ⇒ MigrationFactory
constructor
A new instance of MigrationFactory.
- #migration_file(version:) ⇒ Object
- #play_migration(version:, locale:, data:, metadata:, dictionary:, direction:) ⇒ Object
Constructor Details
#initialize(migration_dir) ⇒ MigrationFactory
Returns a new instance of MigrationFactory.
7 8 9 |
# File 'lib/i18n/migrations/migration_factory.rb', line 7 def initialize(migration_dir) @migration_dir = migration_dir end |
Instance Method Details
#all_versions ⇒ Object
11 12 13 |
# File 'lib/i18n/migrations/migration_factory.rb', line 11 def all_versions Dir[@migration_dir + '/*.rb'].map { |name| File.basename(name).gsub('.rb', '') } end |
#get_migration(version:) ⇒ Object
15 16 17 |
# File 'lib/i18n/migrations/migration_factory.rb', line 15 def get_migration(version:) File.read(migration_file(version: version)) end |
#migration_file(version:) ⇒ Object
19 20 21 |
# File 'lib/i18n/migrations/migration_factory.rb', line 19 def migration_file(version:) File.join(@migration_dir, "#{version}.rb") end |
#play_migration(version:, locale:, data:, metadata:, dictionary:, direction:) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/i18n/migrations/migration_factory.rb', line 23 def play_migration(version:, locale:, data:, metadata:, dictionary:, direction:) filename = File.join(@migration_dir, "#{version}.rb") require filename raise("Can't parse version: #{version}") unless version =~ /^(\d{12})_(.*)/ migration_class_name = "#{$2.camelcase}#{$1}" translations = Translations.new(locale_code: locale, data: data, metadata: ) migration = begin migration_class_name.constantize.new(locale_code: locale, translations: translations, dictionary: dictionary, direction: direction) rescue raise "Couldn't load migration #{migration_class_name} in #{filename}" end migration.change end |