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
![](https://s3.amazonaws.com/media-p.slid.es/uploads/365051/images/2509388/Screen_Shot_2016-04-20_at_8.21.57_PM.png)
Milestone 1
Complété!!!!!
Ruby and Rails milestone 1
By Sophie Déziel
Ruby and Rails milestone 1
- 1,513