Ruby-on-Rails

&
PostgreSQL
John Ashmead
Ruby-on-Rails
•

Based on Ruby

•

A Framework, like Django

•

Widely popular

•

Ruby + ActiveRecord + Lots of Web Stuff...
Ruby Version
Manager
•

RVM lets you run multiple versions of ruby

•

Copies everything into some trees, then switches
po...
Gemfile
source 'https://rubygems.org'
!

ruby '2.0.0'
!

# Make sure we are using latest ‘rails’
gem 'rails', '4.0.0'
!

# ...
ActiveRecord
•

Database adaptor

id

•

General purpose

name

•

Convention over
configuration

•

Reasonable defaults

•...
Finally, PostgreSQL
•

‘pg’ gem

•

Provides ActiveRecord with
interface to Postgres

•

AR has an “execute”
function that...
Foreign Keys
•

ActiveRecord has a lot of “associations”

•

Has_many, belongs_to, has_and_belongs_to_many

•

Doesn’t cle...
create_table "maps", force: true do |t|
t.integer "user_id"
t.string
"map_type",
t.string
"name"
t.text
"description"
t.de...
Migrations
rails generate scaffold Map user_id:integer map_type:string
name:string description:text map_width:decimal
map_...
Heroku stack
•

Ruby-on-Rails front end

•

PostgreSQL preferred

•

Well documented

•

Free up to a reasonable point

•
...
Red

Green

Refactor

•

Agile & Stories

•

Examples & TDD (Testdriven development) over
APIs

•

MVC: Model/View/
Contro...
Domain Specific Languages
•

•

PostgreSQL makes it
easy to hook existing
languages in: i.e.
Javascript as a server
languag...
Long learning curves
•

Ruby-on-rails has a
lot of levels

•

Achieving rapport
with rails takes time

•

Help: railscasts...
There’s a page for that
•

http://localhost:8081/phpPgAdmin/

•

http://guides.rubyonrails.org

•

http://api.rubyonrails....
Upcoming SlideShare
Loading in …5
×

Ruby on Rails & PostgreSQL - v2

2,310 views

Published on

Ruby-on-Rai

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,310
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Ruby on Rails & PostgreSQL - v2

  1. 1. Ruby-on-Rails & PostgreSQL John Ashmead
  2. 2. Ruby-on-Rails • Based on Ruby • A Framework, like Django • Widely popular • Ruby + ActiveRecord + Lots of Web Stuff + Lots of other Stuff • Michael Hardt: http://ruby.railstutorial.org
  3. 3. Ruby Version Manager • RVM lets you run multiple versions of ruby • Copies everything into some trees, then switches pointers around • Manages gems & gemsets • Bundle install, bundle update
  4. 4. Gemfile source 'https://rubygems.org' ! ruby '2.0.0' ! # Make sure we are using latest ‘rails’ gem 'rails', '4.0.0' ! # Use Postgres as the database for Active Record gem 'pg' ! # Use SCSS for stylesheets gem 'sass-rails', '~> 4.0.0' ! # switch to bootstrap, rspec, factory_girl, selenium, capybara ! …
  5. 5. ActiveRecord • Database adaptor id • General purpose name • Convention over configuration • Reasonable defaults • Standalone product maps description created_at updated_at
  6. 6. Finally, PostgreSQL • ‘pg’ gem • Provides ActiveRecord with interface to Postgres • AR has an “execute” function that lets you run raw sql • ‘postgres-pr’ gem gives access to PostgreSQL specific features, if needed
  7. 7. Foreign Keys • ActiveRecord has a lot of “associations” • Has_many, belongs_to, has_and_belongs_to_many • Doesn’t clean up the existing database • Doesn’t automatically generate the relevant keys • Doesn’t fix the metadata
  8. 8. create_table "maps", force: true do |t| t.integer "user_id" t.string "map_type", t.string "name" t.text "description" t.decimal "map_width" t.decimal "map_height" t.datetime "created_at" t.datetime "updated_at" end CREATE TABLE maps ( id integer NOT NULL, user_id integer, map_type character varying(255), name character varying(255), description text, map_width numeric, map_height numeric, created_at timestamp without time zone, updated_at timestamp without time zone ); Weirder than it looks
  9. 9. Migrations rails generate scaffold Map user_id:integer map_type:string name:string description:text map_width:decimal map_height:decimal class CreateMaps < ActiveRecor def change create_table :maps do |t| t.integer :user_id t.string :map_type, t.string :name, t.text :description t.decimal :map_width t.decimal :map_height ! t.timestamps end end end rake db:migrate && rails db:migrate RAILS_ENV=test
  10. 10. Heroku stack • Ruby-on-Rails front end • PostgreSQL preferred • Well documented • Free up to a reasonable point • Integrated with github • Lots of tools • Mostly works • https://www.heroku.com
  11. 11. Red Green Refactor • Agile & Stories • Examples & TDD (Testdriven development) over APIs • MVC: Model/View/ Controller • Upgrades in RoR much trickier than in PostgreSQL
  12. 12. Domain Specific Languages • • PostgreSQL makes it easy to hook existing languages in: i.e. Javascript as a server language. • Gems versus packages. About 30K gems! Of widely varying quality. • YMMV describe "home page" do let!(:person) { FactoryGirl.create(:person) } } Ruby makes it easy to write DSLs before { sign_in person visit home_people_path(person) } it { should have_content(person.name) it { should have_title(person.name) } end
  13. 13. Long learning curves • Ruby-on-rails has a lot of levels • Achieving rapport with rails takes time • Help: railscasts, stackoverflow, … • Grow little neurons, grow (damn you!)
  14. 14. There’s a page for that • http://localhost:8081/phpPgAdmin/ • http://guides.rubyonrails.org • http://api.rubyonrails.org • https://codeclimate.com • http://localhost:3000 • https://github.com • http://ruby.railstutorial.org/book/ruby-on-rails-tutorial? version=4.0 • http://ruby-doc.com/docs/ProgrammingRuby/ • …

×