Skip to main content

rake db migrate with down, up, redo, rollback options in rails

rake db migrate with down, up, redo, rollback options?


rake db migrate - This can be used to migrate your production/test database using various options like up, down, step, redo, version etc. In this tutorial we will learn how all these options can be used with rake tool to migrate the database.
What is rake?

rake is basically ruby make. i.e. make tool for ruby
It has similar functionality to the make tool that you may have used on unix based systems for comopiling running some kind of script.
rake allows you to ruby particular task in the environment that you specify.
How to Install rake?

You can install rake by installing gem 'rake' as,

gem install rake

Above command will install the latest version of rake tool avaialable.
Various rake db migrate commands
Operation     Command     Description
General     rake db:migrate     This will migrate your database by running migrations that are not run yet
Running specific Migration     rake db:migrate VERSION=20130717110623     This runs specific migration file from your db/migrate directory having version 20130717110623
Running up from migration     rake db:migrate:up VERSION=20130717110623     This runs up part from your migration
Running down from migration     rake db:migrate:down VERSION=20130717110623     This runs down part from your migration
Re-Running Specific Migration     rake db:migrate:redo VERSION=20130717110623     This will first run down part and then up part of the migration having version 20130717110623
Re-Running all migrations     rake db:migrate:redo     This will re-run all the migrations
Rollback a migration     rake db:rollback     This will rollback last run migration(i.e. Default STEP=1)
Rollback last n migrations     rake db:rollback STEP=4     This will rollback last 4 migrations.

These are the few of the operations that can be performed using Ruby Make i.e. rake tool on database. You can find more on rake on source page.
RAILS_ENV(Environment) under consideration -

Whenever you try any of the above command rake by default considers development as the database in use as you have not passed environment for consideration. You can explicitly pass the environment argument as follows,

rake RAILS_ENV=production db:migrate

The above command when executed rake will use production database to perform migration operation.
How rake db migrate decides which migrations to be run -

This question is resolved by rake using schema_migrations table in your database which maintains versions of the migrations that have been already run on your database. And whenever you try to run rake db migrate then it check the codebase and schema_migrations entries and difference helps deciding which migrations to be run from the codebase.

Comments

Popular posts from this blog

Error malloc(): memory corruption nginx with passenger?

Error malloc(): memory corruption nginx with passenger Passenger issue resolving steps :  sudo gem uninstall passenger(uninstall all passenger) sudo gem install passenger sudo passenger-install-nginx-module --auto --auto-download --prefix=/opt/nginx --extra-configure-flags=none Update nginx config file with new passenger version and restart the nginx

Lazy loading in rails – Rails Feature

 Lazy loading in rails – Rails Feature ? Lazy loading in rails is the amazing feature provided with rails. In console you might have tried to examine how lazy loading in rails actually works. In this tutorial, we will learn about this Rails - Lazy loading feature with examples. What exactly is Lazy Loading? As the name suggests the data is loaded in lazy manner (Really!) i.e. Your database is queried only when data from the database is required for some kind of manipulation in code. You will get more of this after you read how-to of lazy loading below. How lazy loading works: Whenever you try to get some data from database, For example, users is the database table that you have. And you are querying database to get users having age less than 20. Then, you will write code like, result = User.where("age < 20") when above statement is executed, your database is not queries yet(because the resultant data is not required yet). When you execute following code, records = resu...

Rails Migration Difference between Text and String

Rails Migration Difference between Text and String ? While working with Rails Migration Difference between Text and String is important to be known to every developer. Columns and their data types are finalized while deciding Table structure. This tutorial will help understand difference between String and Text column type and illustrate how to write Rails Migration implementing the same. You might want to read about database.yml files for specifying database configuration for Rails Application. 1. Concepts When String or Text data type is required?     Whenever you require your column to store information which is lengthy in size (Many characters), you need to consider String or Text data type for the column.     Both of them let you store Many(How Many - will see later) characters Difference between String and Text Considering MySQL database Feature     String     Text Length     1 to 255     ...