Uruchamianie migracji z konsoli rails
Czy istnieje sposób na uruchomienie komend rake dla db: migrate i db: rollback na konsoli?
Do bani czekać aż środowisko rails się załaduje!
8 answers
Rails
Pozwoli Ci to na migrację bez przeładowywania całego środowiska rails:
ActiveRecord::Migrator.migrate "db/migrate"
I rollback:
# 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::Migrator.rollback "db/migrate", 3
Rails > = 5 (dzięki @gssbzn, jego odpowiedź jest poniżej)
Migrować:
ActiveRecord::MigrationContext.new("db/migrate").migrate
I rollback:
# 3 is the number of migration to rollback, optional, defaults to 1
ActiveRecord::MigrationContext.new("db/migrate").rollback 3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-06-10 06:55:01
W konsoli:
ActiveRecord::Migration.remove_column :table_name, :column_name
Aby zaktualizować plik schema.rb
po uruchomieniu migracji z konsoli, należy uruchomić rails db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-19 16:31:43
Inny sposób, w jaki znajduję neatera, aby uruchomić jakieś polecenie migracji z konsoli, jest taki:
ActiveRecord::Schema.define do
create_table :foo do |t|
t.string :bar
t.timestamps
end
end
Ma to tę zaletę, że zawartość wewnątrz bloku jest kompatybilna z kopiowaniem i wklejaniem losowej zawartości z prawdziwego pliku migracji / schema.rb
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-12 04:50:20
Dla rails 5.2 zaakceptowana odpowiedź została usunięta i zastąpiona przez
ActiveRecord::MigrationContext.new("db/migrate").migrate
Należy pamiętać, że może to również ulec zmianie w przyszłych wersjach rails, ponieważ działają one w celu dodania wielu połączeń z bazą danych
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-10 11:18:41
Możesz użyć polecenia %x []
%x[rake db:migrate]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-02 17:50:08
Musiałem udawać, że migracja została uruchomiona, aby odblokować wdrożenie, można to zrobić za pomocą:
class Mig < ActiveRecord::Base; self.table_name = 'schema_migrations';end
Mig.create! version: '20180611172637'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-18 21:25:24
Dla szyn 5 i szyn 6:
ActiveRecord::Base.connection.migration_context.migrate
Dla szyn 3 i szyn 4:
ActiveRecord::Migrator.migrate 'db/migrate'
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-30 17:34:26
Stworzyłem metodę w moimplik irbrc, który uruchamia migracje, przeładowuje konsolę:
def migrate
if defined? Rails::Console # turn off info logging for Rails 3
old_log_level = ActiveRecord::Base.logger.try(:sev_threshold)
ActiveRecord::Base.logger.sev_threshold = Logger::WARN
end
reload! && migations_ran = true if ActiveRecord::Migrator.migrate(Rails.root.join("db/migrate")).any?
ActiveRecord::Base.logger.sev_threshold = old_log_level if defined? old_log_level
migations_ran ||= nil # useful exit status
end
Zobacz cały plik tutaj: https://gist.github.com/imme5150/6548368
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-13 09:17:27