Web development that doesn`t hurt

Transcription

Web development that doesn`t hurt
Ruby On Rails
Web development that doesn’t hurt
Table des matières
-
Ruby
Rails
Modèle
Vue
Contrôleur
Références
Ruby
- Langage créer en 1995 par Yukihiro
Matsumoto
- Inspiré par Perl, Smalltalk, Eiffel, Ada et
Lisp
- Langage interprété
- Langage fortement orienté objet
- “Ruby is simple in appearance, but is very complex
inside, just like our human body” - Yukihiro Matsumoto
Gems
- Gems = librairies
- Gérées par
RubyGems
Gemfile
source 'https://rubygems.org'
# Bundle edge Rails instead: gem 'rails',
github: 'rails/rails'
gem 'rails', '4.2.4'
# Use mysql as the database for Active Record
gem 'mysql2', '~> 0.3.20'
# Use SCSS for stylesheets
gem 'rails_admin', '~> 0.7.0'
gem 'cancancan'
gem 'devise', '~> 3.5.2'
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript
assets
gem 'uglifier', '>= 1.3.0'
Ruby on rails
-
Une des gems de ruby
Fait pour faire du web avec ruby
Implémente de base le modèle MVC
Utilise un routeur interne pour les URL
Ruby on rails
- Simplifier la conception d’applications et
sites web
- Réduire les risques de bogues
- Augmenter la maintenabilité
- Quelques sites utilisant rails:
- Twitter, Github, Kickstarter, Twitch et plusieurs
autres
Modèle
- Définit la structure de la base de données
- Réduit la redondance
- Optimisation des requêtes
Exemple de migration
class Cores < ActiveRecord ::Migration
def change
create_table 'countries' do |t|
t.string :name
end
create_table 'states' do |t|
t.string :name
t.string :code
t.belongs_to :country , foreign_key : true
end
create_table 'cities' do |t|
t.string :name
t.belongs_to :state, foreign_key : true
end
...
add_foreign_key :productions , :entities ,
column: :author_id , on_delete : :cascade
## Association Tables ##
create_table 'sponsor_productions' do |t|
t.integer :weight
t.belongs_to :sponsor , foreign_key : true
t.belongs_to :production , foreign_key : true
end
create_table 'entity_productions' do |t|
t.string :name
t.string :first_name
t.string :quote
t.text :description
t.belongs_to :entity, foreign_key : true
t.belongs_to :production , foreign_key : true
end
end
end
Exemple d’un modèle
class Production < ActiveRecord::Base
has_many :comments
has_many :performances
has_many :sponsor_productions
has_many :entity_productions
def author
Entity.find(self.author_id)
rescue ActiveRecord::RecordNotFound
return nil
end
def producer
Entity.find(self.producer_id)
rescue ActiveRecord::RecordNotFound
return nil
end
end
Contrôleur
-
Accès à la base de données
Validations
Affichages (Préparation)
Contrôle d’accès utilisateurs
Exemple d’un contrôleur
class ProductionsController < ApplicationController
protect_from_forgery with: :exception
def collection
@productions = Production.all
end
def show
@productions = Production.all
@production = @productions.find_by id: params[:id || 0]
end
end
Vue
- Format ERB (Embedded Ruby)
- Multiples symboles pour intégrer le ruby au
html
-
<% %>
Exécute le code
<%= %>
Exécute le code et affiche le résultat
<%- -%>
Enlève les espaces précédent et suivant les brackets
<%# %>
Commentaires
Exemple d’une vue
<section class="cast">
<h3>Distribution</h3>
<ul>
<%- @production.entity_productions.all.each { |entity_production| %>
<li>
<%= image_tag entity_production.image('512x512'), :height => 256, :width => 171 %>
<div>
<h4><%= entity_production.full_name %></h4>
<sup><%= entity_production.entity.full_name %></sup>
<p class="quote"><%= entity_production.quote %></p>
<%- if entity_production.description != nil
entity_production.description.each_line { |description| %>
<p><%= description %></p>
<%- } %>
<%- end %>
</div>
</li>
<%- } %>
</ul>
</section>
Références
- ruby-lang.org
- rubyonrails.org

Documents pareils

Annexes - Divertissements mathématiques et informatiques

Annexes - Divertissements mathématiques et informatiques Figure A.7 – Le programme Xcode est rangé dans Developer, Applications. Pour éditer un fichier Ruby dans Xcode, lancez Xcode, puis faites : File/New Empty File. Lorsque vous enregistrerez le fichie...

Plus en détail