Class: ActiveRecord::Migrator
- Inherits:
-
Object
- Object
- ActiveRecord::Migrator
- Defined in:
- lib/active_record/migration.rb
Overview
:nodoc:
Class Attribute Summary collapse
-
.migrations_paths ⇒ Object
Returns the value of attribute migrations_paths.
Class Method Summary collapse
-
.current_version ⇒ Object
For cases where a table doesn't exist like loading from schema cache.
- .migrations_path=(path) ⇒ Object
Instance Method Summary collapse
- #current_migration ⇒ Object (also: #current)
- #current_version ⇒ Object
-
#initialize(direction, migrations, target_version = nil) ⇒ Migrator
constructor
A new instance of Migrator.
- #load_migrated ⇒ Object
- #migrate ⇒ Object
- #migrated ⇒ Object
- #migrations ⇒ Object
- #pending_migrations ⇒ Object
- #run ⇒ Object
- #runnable ⇒ Object
Constructor Details
#initialize(direction, migrations, target_version = nil) ⇒ Migrator
Returns a new instance of Migrator.
1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 |
# File 'lib/active_record/migration.rb', line 1179 def initialize(direction, migrations, target_version = nil) @direction = direction @target_version = target_version @migrated_versions = nil @migrations = migrations validate(@migrations) ActiveRecord::SchemaMigration.create_table ActiveRecord::InternalMetadata.create_table end |
Class Attribute Details
.migrations_paths ⇒ Object
Returns the value of attribute migrations_paths.
1162 1163 1164 |
# File 'lib/active_record/migration.rb', line 1162 def migrations_paths @migrations_paths end |
Class Method Details
.current_version ⇒ Object
For cases where a table doesn't exist like loading from schema cache
1172 1173 1174 |
# File 'lib/active_record/migration.rb', line 1172 def current_version MigrationContext.new(migrations_paths).current_version end |
.migrations_path=(path) ⇒ Object
1164 1165 1166 1167 1168 1169 |
# File 'lib/active_record/migration.rb', line 1164 def migrations_path=(path) ActiveSupport::Deprecation.warn \ "`ActiveRecord::Migrator.migrations_path=` is now deprecated and will be removed in Rails 6.0. " \ "You can set the `migrations_paths` on the `connection` instead through the `database.yml`." self.migrations_paths = [path] end |
Instance Method Details
#current_migration ⇒ Object Also known as: current
1195 1196 1197 |
# File 'lib/active_record/migration.rb', line 1195 def current_migration migrations.detect { |m| m.version == current_version } end |
#current_version ⇒ Object
1191 1192 1193 |
# File 'lib/active_record/migration.rb', line 1191 def current_version migrated.max || 0 end |
#load_migrated ⇒ Object
1240 1241 1242 |
# File 'lib/active_record/migration.rb', line 1240 def load_migrated @migrated_versions = Set.new(Base.connection.migration_context.get_all_versions) end |
#migrate ⇒ Object
1208 1209 1210 1211 1212 1213 1214 |
# File 'lib/active_record/migration.rb', line 1208 def migrate if use_advisory_lock? with_advisory_lock { migrate_without_lock } else migrate_without_lock end end |
#migrated ⇒ Object
1236 1237 1238 |
# File 'lib/active_record/migration.rb', line 1236 def migrated @migrated_versions || load_migrated end |
#migrations ⇒ Object
1227 1228 1229 |
# File 'lib/active_record/migration.rb', line 1227 def migrations down? ? @migrations.reverse : @migrations.sort_by(&:version) end |
#pending_migrations ⇒ Object
1231 1232 1233 1234 |
# File 'lib/active_record/migration.rb', line 1231 def pending_migrations already_migrated = migrated migrations.reject { |m| already_migrated.include?(m.version) } end |
#run ⇒ Object
1200 1201 1202 1203 1204 1205 1206 |
# File 'lib/active_record/migration.rb', line 1200 def run if use_advisory_lock? with_advisory_lock { run_without_lock } else run_without_lock end end |
#runnable ⇒ Object
1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 |
# File 'lib/active_record/migration.rb', line 1216 def runnable runnable = migrations[start..finish] if up? runnable.reject { |m| ran?(m) } else # skip the last migration if we're headed down, but not ALL the way down runnable.pop if target runnable.find_all { |m| ran?(m) } end end |