Ruby on Rails cheatsheet
Creating a new rails project
Using MySQL as the databaserails new myapp -d mysql
rails new myapp -d postgresql
Installing Gems
To manually install gems that you add, use the following command from the project directorybundle
# OR
bundle install
Starting your rails server
rails s
# OR
rails server
Generator commands
Rails generator commands usually start withrails generate. The shorthand for the same is rails g.
Generating controllers
rails g controller controller_name action_name1 action_name2...
# e.g.
rails g controller Users index new create show update edit delete
Controller names are always pluralTODO: What do each of the action methods stand for
Generating models
rails g model SingularModelName field_name:datatype field_name:datatype
# e.g
rails g model User name:string email:string
Model names are always singular
Generating migration
Create a new migration file with a timestamprails g migration meaningfully_descriptive_name
rails g migration add_password_digest_to_users password_digest:string
Generating integration tests (test for UI elements like forms etc)
rails g integration_test testname
# e.g.
rails g integration_test users_signup
Routes
Checking the available routes on your rails apprake routes
Rake commands
Update your database based upon the latest migration scriptrake db:migrate
rake test
rake test:models
rake test:controllers
rake test:helpers
Rails console
Rails let you run an interactive console which will already have access to your application code. You can enter the rails console through the following commandsrails console
rails console test
rails console production
```sh
If you are already in the console, and you want to know which environment you are running against, you can do this
```sh
Rails.env
Rails.env.development?
Rails.env.test?
Rails.env.production?
Running the application in different modes
rails server --environment production
rails server --environment test
OR
RAILS_ENV=production rails server
RAILS_ENV=test rails server
rake db:migrate RAILS_ENV=production
rake db:migrate RAILS_ENV=test
Debugging
- Place the keyword byebuganywhere in the source code of your controllers/helpers/models and rails will automatically pause execute at that point.
- To print the attribute values of an object, use y user.attributesorputs user.attributes.to_yaml
Common errors
model.save fails and returns false e.guser.save
SELECT  1 AS one FROM `users` WHERE `users`.`email` = '[email protected]' LIMIT 1
   (0.1ms)  ROLLBACK
 => false
user.errors.messages
 
    