Class: Prick::FeatureMigration

Inherits:
Migration show all
Defined in:
lib/prick/migration.rb

Constant Summary collapse

FEATURE_TMPL_DIR =
"features/feature"
FILES =
[
  MIGRATE_SQL = "migrate.sql",
  DIFF_SQL = "diff.sql"
]

Constants inherited from Migration

Migration::KEEP_FILE

Instance Attribute Summary collapse

Attributes inherited from Migration

#path

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Migration

#<=>, #destroy, feature?, #migrate, path, #to_s, version

Constructor Details

#initialize(path, name: File.basename(path)) ⇒ FeatureMigration

Returns a new instance of FeatureMigration.



182
183
184
185
186
187
188
189
190
# File 'lib/prick/migration.rb', line 182

def initialize(path, name: File.basename(path))
  Migration.feature?(path) or raise "Expected a feature path, got #{path}"
  super(path, FEATURE_TMPL_DIR)
  @name = name
  @version = Migration.version(path)
  @release_migration = ReleaseMigration.new(File.dirname(path))
  @migrate_sql = File.join(path, MIGRATE_SQL)
  @diff_sql = File.join(path, DIFF_SQL)
end

Instance Attribute Details

#diff_sqlObject (readonly)

Returns the value of attribute diff_sql.



169
170
171
# File 'lib/prick/migration.rb', line 169

def diff_sql
  @diff_sql
end

#migrate_sqlObject (readonly)

Returns the value of attribute migrate_sql.



168
169
170
# File 'lib/prick/migration.rb', line 168

def migrate_sql
  @migrate_sql
end

#nameObject (readonly)

Returns the value of attribute name.



164
165
166
# File 'lib/prick/migration.rb', line 164

def name
  @name
end

#release_migrationObject (readonly)

The enclosing release migration



166
167
168
# File 'lib/prick/migration.rb', line 166

def release_migration
  @release_migration
end

#versionObject (readonly)

Returns the value of attribute version.



165
166
167
# File 'lib/prick/migration.rb', line 165

def version
  @version
end

Class Method Details

.files(path) ⇒ Object



209
210
211
# File 'lib/prick/migration.rb', line 209

def self.files(path)
  release_files + FILES.map { |file| File.join(path, file) }
end

.release_files(path) ⇒ Object



213
214
215
# File 'lib/prick/migration.rb', line 213

def self.release_files(path)
  ReleaseMigration.files(path)
end

Instance Method Details

#createObject



193
194
195
196
# File 'lib/prick/migration.rb', line 193

def create() 
  release_migration.exist? || release_migration.create
  super
end

#dumpObject



217
218
219
220
221
222
# File 'lib/prick/migration.rb', line 217

def dump
  super {
    puts "name: #{name}"
    puts "release_migration: #{path}"
  }
end

#exist?Boolean

Returns:

  • (Boolean)


192
# File 'lib/prick/migration.rb', line 192

def exist?() release_migration.exist? && super end

#feature_pathsObject



180
# File 'lib/prick/migration.rb', line 180

def feature_paths() release_migration.feature_paths end

#feature_versionsObject



179
# File 'lib/prick/migration.rb', line 179

def feature_versions() release_migration.feature_versions end

#features_sqlObject



172
# File 'lib/prick/migration.rb', line 172

def features_sql() release_migration.features_sql end

#features_ymlObject



171
# File 'lib/prick/migration.rb', line 171

def features_yml() release_migration.features_yml end

#filesObject



176
# File 'lib/prick/migration.rb', line 176

def files() [migrate_sql, diff_sql] end

#include_feature(migration) ⇒ Object



205
206
207
# File 'lib/prick/migration.rb', line 205

def include_feature(migration)
  release_migration.include_feature(migration, append: false)
end

#migrations_sqlObject



173
# File 'lib/prick/migration.rb', line 173

def migrations_sql() release_migration.migrations_sql end

#prepareObject



199
200
201
202
203
# File 'lib/prick/migration.rb', line 199

def prepare() 
  release_migration.present? || release_migration.prepare
  super
  release_migration.append_features_yml([path])
end

#present?Boolean

Returns:

  • (Boolean)


198
# File 'lib/prick/migration.rb', line 198

def present?() release_migration.present? && super end

#release_diff_sqlObject



174
# File 'lib/prick/migration.rb', line 174

def release_diff_sql() release_migration.diff_sql end

#release_filesObject



177
# File 'lib/prick/migration.rb', line 177

def release_files() release_migration.files end