Ceci est un résumé des étapes pour changer la base de données d'un nouveau projet créé avec Ruby on Rails.
La base de données standard de Ruby on Rails est SQLite3 </ b>, mais lors du déploiement sur Heroku, SQLite3 génère une erreur. </ b>
Si vous passez à PostgreSQL au moment de rails new
, vous pouvez éviter la migration des données plus tard.
Installez d'abord le xcode
requis pour installer le Homebrew
.
xcode-select --install
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Cliquez ici pour la page officielle: Homebrew
Vous pouvez télécharger la dernière version stable en spécifiant postgresql
.
brew install postgresql
Mettre à jour .bash_profile
ECHO 'export PGDATA=/usr/local/var/postgres' >> .bash_profile
Recharger .bash_profile
source ~/.bash_profile
Créez un utilisateur pour gérer la base de données.
createuser <username>
Mettez à jour le Gemfile et remplacez la description de SQLite3 par PostgreSQL.
Changer avant
Gemfile.rb
# Use sqlite3 as the database for Active Record
gem 'sqlite3', '~> 1.4'
Après le changement
Gemfile.rb
# Use Postgres as the database for Active Record
gem 'pg'
Installez la gemme avec l'installation groupée.
bundle install
app/config/database.yml
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: myapp_dev #Nom de base de données arbitraire
test:
<<: *default
database: myapp_sandbox #Nom de base de données arbitraire
production:
<<: *default
database: myapp_production #Nom de base de données arbitraire
username: <username> #Tout nom d'utilisateur
password: request.env['DB_PASSWORD'] #Tout mot de passe
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
Si vous écrivez le mot de passe tel qu'il est dans database.yml
, le mot de passe sera exposé lorsque vous le mettrez à jour vers GitHub avec Public.
Créons un fichier .env
pour gérer les variables d'environnement.
Ajoutez le fichier .env
à .gitignore
pour l'empêcher d'être téléchargé sur GitHub.
.env
DB_PASSWORD = '<password>'
.gitignore
.env
bundle exec rails db:create
Si le message suivant apparaît, PostgreSQL a terminé la création de la base de données.
Created database 'myapp_dev'
Created database 'myapp_sandbox'
Recommended Posts