Class: MigrationBundler::Util
- Inherits:
-
Object
- Object
- MigrationBundler::Util
- Defined in:
- lib/migration_bundler/util.rb
Class Method Summary collapse
- .camelize(term, uppercase_first_letter = true) ⇒ Object
- .database_named(name) ⇒ Object
- .migration_named(name, timestamp = migration_timestamp) ⇒ Object
- .migration_timestamp ⇒ Object
- .migration_version_from_path(path) ⇒ Object
- .migration_versions_from_paths(paths) ⇒ Object
- .migrations_by_version(paths) ⇒ Object
- .strip_leading_whitespace(string) ⇒ Object
- .target_classes_named(*names) ⇒ Object
- .unique_tag_for_version(version) ⇒ Object
Class Method Details
.camelize(term, uppercase_first_letter = true) ⇒ Object
32 33 34 35 36 37 38 |
# File 'lib/migration_bundler/util.rb', line 32 def camelize(term, uppercase_first_letter = true) string = term.to_s string = string.sub(/^[a-z\d]*/) { $&.capitalize } string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" } string.gsub!('/', '::') string end |
.database_named(name) ⇒ Object
40 41 42 43 44 45 |
# File 'lib/migration_bundler/util.rb', line 40 def database_named(name) raise ArgumentError, "Database name cannot be nil." if name.nil? require "migration_bundler/databases/#{name}_database" klass_name = "MigrationBundler::Databases::#{Util.camelize(name)}Database" Object.const_get(klass_name) end |
.migration_named(name, timestamp = migration_timestamp) ⇒ Object
8 9 10 |
# File 'lib/migration_bundler/util.rb', line 8 def migration_named(name, = ) migration_name = [, Thor::Util.snake_case(name)].join('_') end |
.migration_timestamp ⇒ Object
4 5 6 |
# File 'lib/migration_bundler/util.rb', line 4 def Time.now.strftime('%Y%m%d%H%M%S%3N').to_i end |
.migration_version_from_path(path) ⇒ Object
16 17 18 |
# File 'lib/migration_bundler/util.rb', line 16 def migration_version_from_path(path) path.match(/(\d{17})_/)[1].to_i end |
.migration_versions_from_paths(paths) ⇒ Object
20 21 22 |
# File 'lib/migration_bundler/util.rb', line 20 def migration_versions_from_paths(paths) paths.map { |path| migration_version_from_path(path) } end |
.migrations_by_version(paths) ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/migration_bundler/util.rb', line 24 def migrations_by_version(paths) paths.inject({}) do |hash, path| version = migration_version_from_path(path) hash[version] = path hash end end |
.strip_leading_whitespace(string) ⇒ Object
12 13 14 |
# File 'lib/migration_bundler/util.rb', line 12 def strip_leading_whitespace(string) string.gsub(/^\s+/, '') end |
.target_classes_named(*names) ⇒ Object
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/migration_bundler/util.rb', line 47 def target_classes_named(*names) raise ArgumentError, "Database name cannot be nil." if names.nil? names.flatten.map do |name| require "migration_bundler/targets/#{name}/#{name}_target" klass_name = "MigrationBundler::Targets::#{Util.camelize(name)}Target" Object.const_get(klass_name).tap do |klass| yield klass if block_given? end end end |
.unique_tag_for_version(version) ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/migration_bundler/util.rb', line 58 def unique_tag_for_version(version) revision = nil tag = nil begin tag = [version, revision].compact.join('.') existing_tag = `git tag -l #{tag}` break if existing_tag == "" revision = revision.to_i + 1 end while true tag end |