Getting started Ruby on Rails 5
In this post, you will see how to write a rails application from scratch. i.e setup and writing some simple functionality. “Ruby on Rails” is a frame, which comes with a pre-set scaffolding and that courageous MVC pattern as default working principle.
Generate a rails app:
rails new <app-name> -d <database>rails new test-app -d mysql (default:sqllite)
Basic Configurations:
If we make changes to Gemfile then run:
bundle install
App-level config:
config/application.rb
# Application configuration should go into files in config/initializersi.e :config/initializers
DB-Configuration: (database.yml)
Query to create a database and user for a rails application.
Login into your database console and execute these queries
CREATE DATABASE test-app_development;CREATE DATABASE test-app_test;GRANT ALL PRIVILEGES ON test-app_development.* To 'rails_user'@'localhost' IDENTIFIED By '<password>';GRANT ALL PRIVILEGES ON test-app_test.* To 'rails_user'@'localhost' IDENTIFIED By '<password>';
And update database.yml with database name and user/password
Verify DB settings:
rails db:schema:dump
it will generate: db/schema.rb. No output means all good.
Model View Controller:
Model-View-Controller: In a real-life scenario, you can find this pattern very common. As in the cartoon below, is a representation of your favorite burger store. Where the counter manager acts as a Controller, who takes orders from the customer(Brower/Client) and then convey the request to the chef, who start cooking your delicious burger based on your preference. It is similar way controller sends the exchanges the data with the model which is required to display on your view. The Model will be your burger recipe which going to be the same for a respective type of client request. And finally, your controller will get the burger from the kitchen and serve it to the client i.e your View.
Let’s discuss the generated app structure.
- Assets: Images, CSS, javascript
- Channels: Action Channels
- Controllers
- Helpers: View helpers
- Jobs: Like Cron
- Mailer: Sending emails
- Model
- Views
Start a Web-Server: for development (puma-server)
rails server or rails s
if you get this error: undefined symbol: OPENSSL_init_ssl
//issue with openssl gem install puma -- --with-opt-dir=/usr/local/bin/openssl (location of openssl installation)
Once the puma server started, you can visit the url in browser:
Generate a Controller and a View:
rails g
Please choose a generator below.
Rails:
assets
channel
controller
generator
…
rails generate controller BurgerController BurgerView
Routing :
Acts like menu options in the burger store. You need a burger, you will choose the burger route. You need french fries, you will pick the respective route.
Types of route:
- Simple
- Default
- Root
- Resourceful (restful): for rest service
config/routes.rb
Rails.application.routes.draw doget 'burger_controller/BurgerView'# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.htmlend
Burger Controller:
class BurgerControllerController < ApplicationControllerlayout falsedef BurgerView
@burgerList = ['Cheese-Burger', 'Bacon Burgers', 'Green-Chile Burgers']
render('BurgerView')
end
end
Burger View (app/views/test_controller/index.html.erb)
<h1>BurgerController#BurgerView</h1>
<p>Find me in app/views/burger_controller/BurgerView.html.erb</p><% @burgerList.each do |n| %>
<%= n %> <br />
<% end %>
We have seen how to create a Rails application from scratch with a real-life scenario that resembles the MVC pattern which lays the foundation of this framework.
Thank You for reading it! happy-coding