Upload
cafenarlon
View
101
Download
1
Embed Size (px)
Citation preview
Je code mon blog
avec Ruby et Ruby on Rails
WIFI
SSID : OFAC_BUREAU1Pwd : oFaC-wireless
Ruby on Rails developer depuis 2008Freelance depuis 2010● Pepper & Koffee (2008 - 2012)● 2houses.com (fév. 2012 - mars 2014)● Apptweak.com (depuis mars 2014)
Cédric Bousmanne (@akyrho)
Sondage d’opinion
Qui a déjà utilisé un langage de programmation ?
Si oui, le(s)quel(s) ?
Installation de Ruby
https://bitnami.com/stack/ruby/installer
Ruby vs. Ruby on Rails (RoR)
Langage de programmation interpreté, orienté objet
Framework construit sur Ruby
MVC
Modèle : traitement des données, interaction BDDVue : Présente les résultats, recevoir les actions de l’utilisateurContrôleur : Réception des événements, enclenche les actions à effectuer
MVC par l’exemple
Je souhaite envoyer un commentaire● La vue me présente un formulaire que je
rempli● Le contrôleur réceptionne la requête
lorsque j’ai envoyé mon commentaire● Le modèle valide les informations reçues
avant de les enregistrer
DRY (Don’t Repeat Yourself)Facilité par MVC et la métaprogrammation
Convention over configurationSuivre les conventions plutôt que de les préciser
Philosophie de Ruby on Rails
Exemple de convention
Singulier vs. plurielModèle : UserController : UsersController
Vérifier l’installation
cd C:/Bitnami/rubystack-2.0.0-20use_ruby.bat
ruby -v-> ruby 2.0.0p481
Editeur de texte
http://www.sublimetext.com/2
Créer un projet Rails
gem install rails # gem install <gem>
rails new blog # rails new <project>
cd blog
Architecture d’un projet rails
app- assets- controllers- helpers- mailers- models- views
invoke active_record create db/migrate/20141009165133_create_articles.rb create app/models/article.rb invoke test_unit create test/models/article_test.rb create test/fixtures/articles.yml invoke resource_route route resources :articles invoke scaffold_controller create app/controllers/articles_controller.rb (...)
Création du premier scafold
rails generate scaffold article title:string content:text
Ce qu’il s’est passé
● Création d’une migration● Création du modèle● Création des routes● Création du controlleur● Création des vues● Création des assets (js/css)● Création des tests
Migration de la base de donnée
rake db:migrate
-- create_table(:articles)
Publier un article
http://localhost:3000/articles/new
Liste des articles
http://localhost:3000/articles
resources :articles
Les routesfichier config/routes.rb
Prefix Verb URI Pattern Controller#Action
articles GET /articles articles#index
POST /articles articles#create
new_article GET /articles/new articles#new
edit_article GET /articles/:id/edit articles#edit
article GET /articles/:id articles#show
PUT /articles/:id articles#update
DELETE /articles/:id articles#destroy
Ajouter la route par défautconfig/routes.rb
resources :articles
root ‘articles#index’
Modifier l’index des articles
<% @articles.each do |article| %>
<%= render article %>
<% end %>
<%= link_to 'New Article', new_article_path %>
puis rafraîchir la page
app/views/articles/index.html.erb
<section><h2><%= link_to article.title, article %></h2><%= article.content %>
</section>
<hr>
Création du partielapp/views/articles/_articles.html.erb
Un peu de styleapp/assets/stylesheets/articles.css.scss
https://gist.githubusercontent.com/cedricbousmanne/4b0a4bed2cb46a07a8fd/raw/cd8362e32e917c4648ed47b91870f91b6381e8b6/articles.css.scss
Articles#showapp/views/articles/show.html.erb
<%= render @article %>
puis rafraîchir la page
Le layoutapp/views/layouts/application.html.erb
<h1><%= link_to “My awesome blog”, root_path %></h1>
<%= yield %>
puis rafraîchir la page
Un peu d’ordreapp/models/article.rb
class Article < ActiveRecord::Base
default_scope { order(“created_at DESC”) }
end
puis rafraîchir la page
Valider la présence d’attributs
class Article < ActiveRecord::Base
default_scope { order(“created_at DESC”) }
validates_presence_of :title
validates_presence_of :content
end
puis tenter d’ajouter un article sans titre et/ou sans contenu
app/models/article.rb
Et après ?● Déporter les actions create, destroy, update dans une
interface d’administration sécurisée● Ajouter un système de commentaire● Gérer la mise en page des articles● Gérer l’ajout d’image/vidéo● Implémenter un système de pagination● Gestion multi-utilisateur● Gestion d’état (en ligne/hors ligne)● ...
Les gems
Rubygems est gestionnaire de paquets pour ruby (~= plugins)
+/- 90,000 gems disponibles
Installation d’une gem
- En ligne de commande$ gem install devise
- Via le Gemfile (recommandé)Ajout d’une ligne dans le Gemfile$ bundle install
Gems populairesDevise Authentification / Gestion des
utilisateurs
Cancan Gestion des permissions
Kaminari Pagination
Capistrano Automatisation du déploiement
Carrierwave Dragonfly
Upload / gestion d’image / fichier
Pour aller plus loin
● rubygems.org● ruby-toolbox.com● railscasts.com● guides.rubyonrails.org