Enseignements

Initiation aux Frameworks de Programmation Serveur -- RoR TP3-4

Fin du Chapitre 2 (Heroku)

Pour pouvoir deployer sur Heroku il faut configurer la nouvelle app pour postgres. Pour cela il faut commencer par installer postgres sur la machine locale, et ensuite configurer l’app pour fonctionner avec postgres.

Pour installer postgres sur la machine locale, vous avez besoin d’installer le gem suivant:

  • sudo apt-get install postgresql postgresql-server-dev-all

Une partie du travail de configuration de l’app pour etre obtenue lors de la creation, a l’aide d’une option de creation:

rails new <nom_app> —database=postgresql

Cette option n’est toutefois pas suffisante, car elle introduit un risque d’utiliser la mauvaise version du gem ‘pg’ et ne configure pas completement le fichier de config de la base de donnees.

Au final, en supposant que l’application s’appelle nom_app, vous devez editer les fichiers Gemfile et config/database.yml de la facon suivante:

  • Gemfile
source 'https://rubygems.org'
ruby '1.9.3'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.0.3'

# Attention a la version ici!
gem 'pg', "~> 0.17.1"

# Requis par heroku
gem 'rails_12factor'

group :development do
  # On utilise cela pour les tests
  gem 'rspec-rails', '2.14.1'
end

group :assets do
  # Use SCSS for stylesheets
  gem 'sass-rails', '~> 4.0.0'
  # Use Uglifier as compressor for JavaScript assets
  gem 'uglifier', '>= 1.3.0'
  # Use CoffeeScript for .js.coffee assets and views
  gem 'coffee-rails', '~> 4.0.0'
end

# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby

# Use jquery as the JavaScript library
gem 'jquery-rails'

group :test do
   gem 'capybara', '1.1.2'
end

# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'

# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 1.2'

group :doc do
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', require: false
end

# Use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.1.2'

# Use unicorn as the app server
# gem 'unicorn'

# Use Capistrano for deployment
# gem 'capistrano', group: :development

# Use debugger
# gem 'debugger', group: [:development, :test]
  • config/database.yml
# PostgreSQL. Versions 8.2 and up are supported.
#
# Install the pg driver:
#   gem install pg
# On OS X with Homebrew:
#   gem install pg -- --with-pg-config=/usr/local/bin/pg_config
# On OS X with MacPorts:
#   gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
#   gem install pg
#       Choose the win32 build.
#       Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
development:
  adapter: postgresql
  encoding: unicode
  database: <app_name>_development
  pool: 5
  username: tprails
  password:

  # Connect on a TCP socket. Omitted by default since the client uses a
  # domain socket that doesn't need configuration. Windows does not have
  # domain sockets, so uncomment these lines.
  #host: localhost

  # The TCP port the server listens on. Defaults to 5432.
  # If your server runs on a different port number, change accordingly.
  #port: 5432

  # Schema search path. The server defaults to $user,public
  #schema_search_path: myapp,sharedapp,public

  # Minimum log levels, in increasing order:
  #   debug5, debug4, debug3, debug2, debug1,
  #   log, notice, warning, error, fatal, and panic
  # Defaults to warning.
  #min_messages: notice

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: postgresql
  encoding: unicode
  database: <app_name>_test
  pool: 5
  username: tprails
  password:

production:
  adapter: postgresql
  encoding: unicode
  database: <app_name>_production
  pool: 5
  username: tprails
  password:

Ensuite il ne reste plus qu’a verifier que la connection avec la base postgres fonctionne bien localement, en creant une resource et en executant la migration correspondante:

zsh$ rails generate scaffold User name:string email:string
zsh$
rake db:migrate

(L’execution doit se terminer sans erreur)

Enfin, il ne reste plus qu;a deployer sur heroku

zsh$ git add .
zsh$
git commit -m “avant test heroku”
zsh$ git push heroku master
zsh$
heroku run rake db:migrate
zsh$ heroku ps:scale web=1
zsh$
heroku open

Toute cette sequence doit s’executer sans erreur et aboutir a l’ouverture d’une page web. La page web affiche une erreur mais c’est simplement parce que la page d’accueil par defaut est manquante. Modifiez l’url pour rester sur le meme site, mais en accedant a l’url /users/ et vous devriez voir la page d’index de la resource users…

Chapitre 3: Pages statiques et tests

Encore une nouvelle app!

  • Créez une nouvelle application rails de nom new_app (cette fois c’est la bonne!!):
    • Initialisez git
    • Initialisez le depôt sur github
    • Mettez a jour le Gemfile
    • Sauvez la version initiale sur github
    • Mettez votre app en service sur heroku
    • Envoyez l’url du site Heroku à votre enseignant.
      • Composez un mail avec Sujet= “TP RAILS - Prenom Nom” (En remplacant Prenom et Nom par les votres)
      • Dans le corps du mail, ajoutez un lien vers votre site heroku et un vers le repo gihub

Dorénavant, à partir de ce TP: vous devrez créer une nouvelle branche git pour chaque nouvel exercice, faire les modifications dans la branche, et le merge avec la branche master quand l’exercice est fini. Vous sauverez la branche master sur github a la fin de chaque seance de TP ET après chaque merge.

Tests à l’envers

Pour bien comprendre la logique des tests nous allons d’abord faire les tests dans l’ordre inverse de celui qui est préconisé en cours:

  1. on écrit le code
  2. on écrit le test
  3. on vérifie que le test passe
  4. on vérifie que le test sait échouer

Appliquez cette séquence au développement de la page Home:

  • Commencez par créer un page Home sur le modèle décrit en cours:
    • avec un contenu qui comporte la chaîne “Example App”
    • avec un titre qui comporte “Appli example : Home”
  • Mettez en place le test
  • vérifiez qu’il réussit
  • vérifiez qu’il sait échouer

Tests à l’endroit

Recommencez l’exercice précédent avec la page Help en faisant les tests dans l’ordre préconisé par le cours.

Chapitre 4

Split, shuffle & join

>> def string_shuffle(s)
>>   s.split('').?.?
>> end
=> nil
>> string_shuffle("foobar")
  1. Remplacez les pojnts d’interrogation dans le listing précédent avec les méthodes appropriées split, shuffle et join pour écrire une fonction qui mélange les lettre d’une chaîne.
  2. Montrez comment appliquer ce code à un tableau de chaînes de façon à produire un tableau de chaînes dont les caractères mélangés

Augmentons la classe String

Ajoutez une méthode shuffle (mélanger) à la classe d ebase String.

Hashes

Créez 3 hashes person1, person2, et person3, avec nom et prénom associés aux clefs :nom et :prenome. Puis créez un hash “params” tel que params[:pere] soit person1, params[:mere] soit person2, et params[:enfant] soit person3. Verifiez que params[:pere][:first] a la bonne valeur.

Page d’Accueil

Enseignements 2017-18

Enseignements Antérieurs

Recherche…

edit SideBar

Blix theme adapted by David Gilbert, powered by PmWiki