Bienvenue à 

Open Office 101

Ruby on Rails

For fun and profit

 

Buts

  • Programmation OO avec Ruby
  • Utiliser l'écosystème de Ruby
  • Comprendre les bases d'un framework MVC
  • Construire une application Ruby on Rails
  • La déployer!

http://slides.com/sophiedeziel/ruby-and-rails-milestone-1

Ruby

Langage
 

  • Homebrew
  • SASS
  • Jekyll
  • Vagrant
  • ​Capistrano
  • Sinatra

Rails

Framework
 

  • Basecamp
  • Github
  • Twitter (au debut)
  • Shopify
  • Airbnb
  • Ask.fm
  • Groupon
  • Twitch
  • Etc

Introduction à Ruby

  • Open-Source
  • Écrit en C
  • Interprété
  • Dynamique
  • Orienté Objet

Partie 1

Les bases de Ruby

Hello World

Il le faut.

puts 'Hello World!'
$ ruby helloworld.rb

IRB

Interactive Ruby Shell

→ irb
2.2.4 :001 > 

Tout est un objet

→ irb
2.2.4 :001 > 1
 => 1 
2.2.4 :002 > 1.class
 => Fixnum 
2.2.4 :003 > 1.times { puts "yay!" }
yay!
 => 1 

Tout a une valeur de retour

chiffre = 2

parité = if chiffre % 2 == 0
  'pair'
else
  'impair'
end

puts parité  # => 'pair'

Math, variables, etc..

4 + 3
7 * 6
6 / 2
9 - 4

valeur = 5

valeur + 9

if valeur > 10
  puts "C'est plus grand que 10"
elsif valeur > 5
  puts "C'est plus grand que 5"
else
  puts "C'est plus petit que 5"
end

def pair?(nombre)
  nombre % 2 == 0
end

Array et Hash

# array

[1,2,3]

['chien', 'chat']

couleurs = ['orange', 'pomme', 'banane']

couleurs + 'cerise'

couleurs.size
couleurs.first

# Hash

colors = { blue: '#0000FF', red: '#FF0000', green: '#00FF00' }

colors[:blue]

colors.fetch(:yellow, '#FFFF00')
colors.fetch(:blue, '#000077')

person = {
  name: 'John',
  hobbies: ['volleyball', 'bad puns']
}

Blocks

3.times do
  puts "Yay!"
end

['pomme', 'orange', 'banane'].each do |fruit|
  puts "Je mange une #{fruit}"
end

3.times { puts "Syntaxe sur une ligne" }

variable = 'cinq'

['pomme', 'orange', 'banane'].each do |fruit|
  puts "Je mange #{variable} #{fruit}s"
end

Classe de base

class Zombie < EvilCreature
  attr_accessor :limbs

  def self.spawn_a_lot
    (1..20).map { new }
  end

  def initialize
    @limbs = [:right_arm, :left_arm, :right_leg, :left_leg, :head]
  end

  def shoot
    remove_random_limb
  end

  private

  def remove_random_limb
    @limbs.delete @limbs.sample
  end
end

zombie = Zombie.new
zombie.limbs

horde = Zombie.spawn_a_lot

Ruby on Rails!

cd le/repertoire/de/vos/projets

rails new mon_blog -d postgresql

cd mon_blog

$ rails new my_app

  • Crée tous les fichiers et dossiers de base
  • Fournit des "templates" de cofiguration
  • Roule "bundle install" pour installer toutes les dépendances

Commandes rails

rails server
rails console
rails generate

Commandes rake

rake -T

Dans Rails 5, toutes les commandes rake pourront être roulées avec la commande rails

Base de données

SQLite par défaut

Possible d'utiliser postgres, mysql, mongodb, et plusieurs autres

On doit installer le Gem correspondant et avoir une instance de dev

Finalement, configurer les accès selon les spécifications du gem

Base de données

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: my_app_development

test:
  <<: *default
  database: my_app_test

production:
  <<: *default
  database: my_app_production
  username: my_app
  password: <%= ENV['MY_APP_DATABASE_PASSWORD'] %>

config/database.yml

Base de données

rake db:create



# Il existe plusieurs commandes de bases de données

rake db:create                          
rake db:drop                            
rake db:fixtures:load                   
rake db:migrate                         
rake db:migrate:status                  
rake db:rollback                        
rake db:schema:cache:clear              
rake db:schema:cache:dump               
rake db:schema:dump                     
rake db:schema:load                     
rake db:seed                            
rake db:setup                          
rake db:structure:dump     
rake db:structure:load           
rake db:version              


Serveur Rails

rails server







=> Booting WEBrick
=> Rails 4.2.4 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2016-04-20 20:21:00] INFO  WEBrick 1.3.1
[2016-04-20 20:21:00] INFO  ruby 2.2.1 (2015-02-26) [x86_64-darwin14]
[2016-04-20 20:21:00] INFO  WEBrick::HTTPServer#start: pid=52806 port=3000

Serveur Rails

Milestone 1

Complété!!!!!

Ruby and Rails milestone 1

By Sophie Déziel

Ruby and Rails milestone 1

  • 1,446