Module: Msf::DBManager::Migration
- Included in:
- Msf::DBManager
- Defined in:
- lib/msf/core/db_manager/migration.rb
Instance Attribute Summary collapse
-
#migrated ⇒ Boolean
Flag to indicate database migration has completed.
Instance Method Summary collapse
-
#add_rails_engine_migration_paths ⇒ Object
Loads Metasploit Data Models and adds gathers migration paths.
-
#migrate(config = nil, verbose = false) ⇒ Array<ActiveRecord::MigrationProxy] List of migrations that ran.
Migrate database to latest schema version.
Instance Attribute Details
#migrated ⇒ Boolean
Flag to indicate database migration has completed
66 67 68 |
# File 'lib/msf/core/db_manager/migration.rb', line 66 def migrated @migrated end |
Instance Method Details
#add_rails_engine_migration_paths ⇒ Object
Loads Metasploit Data Models and adds gathers migration paths.
6 7 8 9 10 11 12 13 14 |
# File 'lib/msf/core/db_manager/migration.rb', line 6 def add_rails_engine_migration_paths unless defined? ActiveRecord fail "Bundle installed '--without #{Bundler.settings.without.join(' ')}'. To clear the without option do " \ "`bundle install --without ''` (the --without flag with an empty string) or `rm -rf .bundle` to remove " \ "the .bundle/config manually and then `bundle install`" end gather_engine_migration_paths end |
#migrate(config = nil, verbose = false) ⇒ Array<ActiveRecord::MigrationProxy] List of migrations that ran.
Migrate database to latest schema version.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/msf/core/db_manager/migration.rb', line 24 def migrate(config=nil, verbose=false) ran = [] # Rails 5 changes ActiveRecord parents means to migrate outside # the `rake` task framework has to dig a little lower into ActiveRecord # to set up the DB connection capable of interacting with migration. previouslyConnected = ActiveRecord::Base.connected? unless previouslyConnected ApplicationRecord.remove_connection ActiveRecord::Base.establish_connection(config) end ActiveRecord::Migration.verbose = verbose ActiveRecord::Base.connection_pool.with_connection do begin context = ActiveRecord::MigrationContext.new(gather_engine_migration_paths, ActiveRecord::SchemaMigration) if context.needs_migration? ran = context.migrate end # ActiveRecord::Migrator#migrate rescues all errors and re-raises them # as StandardError rescue StandardError => error self.error = error elog('DB.migrate threw an exception', error: error) end end unless previouslyConnected ActiveRecord::Base.remove_connection ApplicationRecord.establish_connection(config) end # Since the connections that existed before the migrations ran could # have outdated column information, reset column information for all # ApplicationRecord descendents to prevent missing method errors for # column methods for columns created in migrations after the column # information was cached. reset_column_information return ran end |