Rake DB Komande

Rake je uslužni program ugrađen u Rubi i Rails , koji pruža efikasan način za upravljanje promenama baze podataka.Promene baze podataka možete lako migrirati na servere samo pomoću komandne linije!
Možda se pitate tokom razvoja aplikacije:
- Šta se dešava kada se koriste komande baze podataka rake ?
- Kada da ih koristim?
Pogledajmo kako možemo da koristimo ove naredbe za promenu baze podataka dok razvijamo aplikaciju!
Kreiranje
$ rake db:create
Kada prvi put kreirate svoju aplikaciju Rails, ona još uvek neće imati bazu podataka. Da bi se mogao pokrenuti, moraćete biti sigurni da je baza podataka pokrenuta i radi.
Baš kao što se preporučuje korišćenje različitih gemova za svako okruženje, trebalo bi da napravite i tri baze podataka, svaka za razvoj , testiranje i proizvodno okruženje. Možete ih konfigurisati u svojoj config/database.yml
datoteci.
default: &default
adapter: postgresql
encoding: unicode
username: username
password: password
host: localhost
port: 5432
development:
<<: *default
database: story_dev
test:
<<: *default
database: story_test
production:
<<: *default
database: story
Migracija
rake db:migrate
Migracije postavljaju tabele u bazu podataka. Kada pokrenete naredbu za migraciju, ona će potražiti db/migrate/
sve rubi datoteke i izvršiti ih počevši od najstarije. Na početku svakog imena datoteke za migraciju postoji vremenska oznaka .
Svaki put kada migrirate bazu podataka ili napravite bilo kakvu promenu u njoj, poput dodavanja reda ili kolone, dodavanja tabele ili promene tipa podataka, morate da pokrenete ovu naredbu da bi se promene odrazile na vašu bazu podataka. Lista zadataka Rake baze podataka u aplikaciji Rails.
Migracije su stvorene kada pokrenete komande kao što su rails generate scaffold , rails generate model
ili rails generate migration
.
Evo primera kako možete da koristite rake db:migrate
prilikom otpremanja slika .Obavezno ne stvarajte podatke u datotekama za migraciju!
Inicijalizacija
rake db:schema:load
Za razliku od rake db:migrate
toga što pokreće migracije koje još nisu pokrenute, rake db:schema:load
učitava šemu koja je već generisana u db/schema.rb
bazu podataka.
Uvek koristite ovu komandu kada:
- Aplikaciju pokrećete prvi put .
- Kada dropujete bazu podataka i treba da je ponovo kreirate.
Pazi ! Ako radite rake db:schema:load
na proizvodnom serveru, na kraju ćete izbrisati sve svoje proizvodne podatke.
Seeding
rake db:seed
Uvek imamo podrazumevane podatke koje želimo da imamo u našoj aplikaciji radi testiranja.** Komanda seed** postoji za automatizaciju ovog procesa.
Primer : Kreirajte administrativnog korisnika i sačuvajte njegove podatke u db/seed.rb
datoteci. Kada ga pokrenete rake db:seed
, učitaće sve administrativne podatke u vašu aplikaciju.
Admin.create!(email: 'admin@kolosek.com',
password: 'password',
password_confirmation: 'password')
Rails seeding je uglavnom za razvojna i / ili scenska okruženja, u proizvodnji se koristi samo nekoliko primena.Ne želite da vaša proizvodna aplikacija bude korisnicima lažnih semena!
Vraćanje
rake db:rollback
Da li ste kreirali migraciju a da je niste želeli ili ste se jednostavno predomislili u vezi s njom? Ne plaši se! Kada pokrenete ovu naredbu, ona će pogledati poslednju kreiranu migraciju i poništiti je!
Primer : Krenimo od stvaranja nove migracije sa :role
kao ceo broj i pokrenimo migraciju . Tada smo odlučili da umesto toga napravimo niz. Dakle, mi ćemo urediti novostvorenu migraciju i pokrenuti je ponovo, ali ništa se ne dešava i vaši testovi i fabrike neće uspeti.
class CreateRoles < ActiveRecord::Migration
def change
create_table :roles do |t|
t.integer :role # we will change this to t.string :role
t.references :user
t.timestamps
end
end
end
Zašto ovo ne radi?
Sa rake db:migrate
komandom se pokreće samo poslednja kreirana migracija . To znači da se uređivanjem već postojeće migracije neće izvršiti nikakve promene. Da biste ovo uspeli, moraćete da pokrenete rake db:rollback
. Ovo će reći Rails-u da uradi dve stvari:
- Opozovite poslednje promene koje ste upravo uneli u bazu podataka.
- Ažurirajte vremensku oznaku migracije.
Dropping
rake db:drop
Ponekad želimo da izbrišemo sve podatke i tabele i počnemo od početka. Za to je rake db:drop
. Ako želite da zadržite podatke koje imate, napravite sigurnosne kopije pre pokretanja ove naredbe.
Ispuštanje baze podataka takođe će ukloniti sve sukobe šeme ili loše podatke . Jednom kada baza podataka padne, želećete da ponovo započnete postupak ponovnim stvaranjem baze podataka, pokretanjem migracija i zasejavanjem podataka. Budite sigurni da vaši RSpec testovi prolaze nakon prepravke baze podataka!
Uverite se da nemate veze sa bazom podataka ili ona neće pasti.
Resetovanje
rake db:reset
Možda ćete ponekad trebati da ispustite lokalnu bazu podataka i počnete sveže sa podacima učitanim iz db/seeds.rb
. Ovo je korisna komanda kada još uvek otkrivate svoju šemu i često morate da dodate polja postojećim modelima.
Jednom kada se koristi naredba resetovanja, uradiće sledeće:
- Dropujte bazu podataka:
rake db:drop
- Učitajte šemu:
rake db:schema:load
- Seme podataka:
rake db:seed
Zašto db: schema: load, a ne db: migrate?
rake db:schema:load
je mnogo brži od rake db:migrate
, jer učitava šemu iz koje smo već generisali, db/schema.rb
umesto da ponovo prolazimo kroz sve migracije.
Nadam se da vam je ovo pomoglo da shvatite glavnu razliku između naredbi baze podataka rake!
Ne zaboravite da db:subscribe_today sa svojim string: email!