Le Coin Wiki
d'Olivier Dalle
$WikiTagline
 

Installation Ruby on Rails

Version modifie en 2013 pour utiliser rbenv au lieu de rvm

Installation initiale VM

1. Installation des paquetages linux avec apt-get:

  • libcurl4-openssl-dev
  • libreadline-dev
  • libssl-dev
  • openssl
  • zlib1g zlib1g-dev
  • nodejs
  • libsqlite3-dev

2. Installez le shell zsh et changer de shell:

  • sudo qpt-get install zsh
  • chsh Sans sudo !
    • Choisir /bin/zsh

3. Installation de rbenv:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

4. Installer ruby

  • Afficher lq liste des versions de ruby disponibles:
    • rbenv install —list
  • Choisir la derniere 1.9.3
    • rbenv install 1.9.3-p547
    • rbenv global 1.9.3-p547

5. Installer Rails et l’extension hobo

  • gem install hobo

Installation/configuration postgress pour 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…