Tous les guides
Intermédiaire-AvancéÀ votre rythmeGuide gratuitSection 24/33

Déploiement sur Heroku

Apprenez à construire et vérifier une application web avec des outils de développement et des assistants IA. Pratiquez les étapes de conception, code et validation.

💡

Contenu gratuit, accessible sans compte. Les outils et modèles évoluent : consultez le dossier actuel pour vérifier leurs versions. Modèles et sources

Section 13.5.5 : Déploiement sur Heroku

🎯 Objectif pédagogique

Déployer une application Rails sur Heroku, configurer les variables d'environnement, la base de données PostgreSQL, et mettre en place un pipeline CI/CD basique.


Heroku : la plateforme de déploiement Rails

Heroku est une PaaS (Platform as a Service) qui simplifie le déploiement. Un simple git push déploie votre application. C'est la plateforme historique de la communauté Rails.

Préparation du projet

# Gemfile modifications pour production
group :production do
  gem 'pg'            # PostgreSQL en production
end

group :development, :test do
  gem 'sqlite3'       # SQLite en dev
end
# Procfile (à la racine du projet)
web: bundle exec puma -C config/puma.rb
worker: bundle exec sidekiq
release: bundle exec rails db:migrate

Déploiement initial

# 1. Installer Heroku CLI
# 2. Se connecter
heroku login

# 3. Créer l application
heroku create mon-app-rails
# => https://mon-app-rails.herokuapp.com

# 4. Ajouter PostgreSQL
heroku addons:create heroku-postgresql:mini

# 5. Configurer les variables d'environnement
heroku config:set RAILS_MASTER_KEY=$(cat config/master.key)
heroku config:set RAILS_ENV=production

# 6. Déployer
git push heroku main

# 7. Exécuter les migrations
heroku run rails db:migrate

# 8. Seed si nécessaire
heroku run rails db:seed

Variables d'environnement

# Définir des variables
heroku config:set SECRET_KEY_BASE=abc123
heroku config:set SMTP_HOST=smtp.sendgrid.net
heroku config:set SMTP_USERNAME=apikey

# Voir les variables
heroku config

# Utiliser dans Rails
# config/environments/production.rb
config.action_mailer.smtp_settings = {
  address: ENV['SMTP_HOST'],
  user_name: ENV['SMTP_USERNAME'],
  password: ENV['SMTP_PASSWORD']
}

Configuration PostgreSQL en production

# config/database.yml
production:
  adapter: postgresql
  encoding: unicode
  url: <%= ENV['DATABASE_URL'] %>
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

Commandes Heroku utiles

# Logs en temps réel
heroku logs --tail

# Console Rails en production
heroku run rails console

# Bash dans le dyno
heroku run bash

# Redémarrer
heroku restart

# Échelle
heroku ps:scale web=2 worker=1

# Maintenance mode
heroku maintenance:on
heroku maintenance:off

# Backup de base de données
heroku pg:backups:capture
heroku pg:backups:download

Alternatives à Heroku

Plateformes de déploiement Rails

PlateformePrixDifficultéAvantages
HerokuÀ partir de 5$/moisFacileGit push deploy, addons
RenderGratuit (limité)FacileAlternative Heroku moderne
Fly.ioGratuit (limité)MoyenEdge computing, rapide
RailwayGratuit (limité)FacileInterface élégante
AWS EC2VariableDifficileContrôle total, scalable

← Scroll horizontally →

Vérification rapide

Pourquoi ne faut-il JAMAIS utiliser SQLite en production ?

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Votre progression

Cette progression est déclarative et conservée dans votre navigateur. L’attestation finale ne constitue pas un diplôme ni une évaluation indépendante.

Voir ma progression et mon attestation

Apprendre l’IA, du premier prompt aux agents

15 guides gratuitsQuiz, schémas et ateliersSans compte

Un cas pratique IA dans votre boîte mail

Méthodes, ressources et nouveaux exercices. Gratuit, avec désinscription à tout moment.