Le Coin Wiki
d'Olivier Dalle
$WikiTagline
 

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!

  • Crez une nouvelle application rails de nom new_app (cette fois c’est la bonne!!):
    • Initialisez git
    • Initialisez le dept 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

Dornavant, partir de ce TP: vous devrez crer 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 aprs 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 prconis en cours:

  1. on crit le code
  2. on crit le test
  3. on vrifie que le test passe
  4. on vrifie que le test sait chouer

Appliquez cette squence au dveloppement de la page Home:

  • Commencez par crer un page Home sur le modle dcrit en cours:
    • avec un contenu qui comporte la chane “Example App”
    • avec un titre qui comporte “Appli example : Home”
  • Mettez en place le test
  • vrifiez qu’il russit
  • vrifiez qu’il sait chouer

Tests l’endroit

Recommencez l’exercice prcdent avec la page Help en faisant les tests dans l’ordre prconis 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 prcdent avec les mthodes appropries split, shuffle et join pour crire une fonction qui mlange les lettre d’une chane.
  2. Montrez comment appliquer ce code un tableau de chanes de faon produire un tableau de chanes dont les caractres mlangs

Augmentons la classe String

Ajoutez une mthode shuffle (mlanger) la classe d ebase String.

Hashes

Crez 3 hashes person1, person2, et person3, avec nom et prnom associs aux clefs :nom et :prenome. Puis crez 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.