Rake DB Komande

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:

  1. Opozovite poslednje promene koje ste upravo uneli u bazu podataka.
  2. 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:

  1. Dropujte bazu podataka: rake db:drop
  2. Učitajte šemu: rake db:schema:load
  3. 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!