Créez une nouvelle application Ruby on Rails en utilisant MySQL au lieu de SQLite
-
08-06-2019 - |
Question
Je souhaite créer mon application Rails avec MySQL, parce que je l'aime tellement.Comment puis-je faire cela dans la dernière version de Rails au lieu du SQLite par défaut ?
La solution
Si vous avez déjà un projet Rails, changez l'adaptateur dans le config/database.yml
fichier à mysql
et assurez-vous de spécifier un nom d'utilisateur et un mot de passe valides, et éventuellement un socket :
development:
adapter: mysql2
database: db_name_dev
username: koploper
password:
host: localhost
socket: /tmp/mysql.sock
Ensuite, assurez-vous de modifier votre Gemfile pour inclure l'adaptateur mysql2 ou activerecord-jdbcmysql (si vous utilisez jruby).
Autres conseils
Normalement, vous créeriez une nouvelle application Rails en utilisant
rails ProjectName
Pour utiliser MySQL, utilisez
rails new ProjectName -d mysql
Pour Rails 3, vous pouvez utiliser cette commande pour créer un nouveau projet en utilisant MySQL :
$ rails new projectname -d mysql
Allez sur le terminal et écrivez :
rails new <project_name> -d mysql
Si vous n'avez pas encore créé votre application, accédez simplement à cmd (pour Windows) ou au terminal (pour Linux/Unix) et tapez la commande suivante pour créer une application Rails avec la base de données MySQL :
$rails new <your_app_name> -d mysql
Cela fonctionne pour tout ce qui est supérieur à la version 3 de Rails.Si vous avez déjà créé votre application, vous pouvez effectuer l'une des deux opérations suivantes :
- Créer un un autre nom application avec base de données mysql, allez sur cd un autre nom/config/ et copiez le fichier database.yml de cette nouvelle application.Collez-le dans le fichier database.yml de votre_nom_application application.Mais assurez-vous de modifier les noms de base de données et de définir le nom d'utilisateur/mot de passe de votre base de données en conséquence dans le fichier database.yml après cela.
OU
- Aller au CD votre_nom_application/config/ et ouvrez database.yml.Renommez comme suit :
développement:
adaptateur:mysql2
base de données:nom_base de données_nom
nom d'utilisateur:racine
mot de passe:
hôte:hôte local
prise:/tmp/mysql.sock
De plus, supprimez la gemme 'sqlite3' de votre Gemfile et ajoutez la gemme 'mysql2'
Si vous utilisez Rails 3 ou une version supérieure
rails new your_project_name -d mysql
si vous avez une version antérieure
rails new -d mysql your_project_name
Donc, avant de créer votre projet, vous devez trouver la version des rails.que vous pouvez trouver par
rails -v
rails -d mysql ProjectName
rails new <project_name> -d mysql
OU
rails new projectname
Modifications dans config/database.yml
development:
adapter: mysql2
database: db_name_name
username: root
password:
host: localhost
socket: /tmp/mysql.sock
Créer une application avec l'option -d
rails new AppName -d mysql
$ rails --help
est toujours ton meilleur ami
usage:
$ rails new APP_PATH[options]
notez également que les options doivent être données après le nom de l'application
rails et mysql
$ rails new project_name -d mysql
rails et postgresql
$ rails new project_name -d postgresql
Vous devez utiliser le commutateur -D au lieu de -d car il générera deux applications et MySQL sans dossiers de documentation.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
Alternativement, vous utilisez simplement le --database
option.
Allez simplement dans la console Rails et tapez :
rails new YOURAPPNAME -d mysql
Dans Rails 3, vous pourriez faire
$rails new projectname --database=mysql
Si vous créez une nouvelle application Rails, vous pouvez définir la base de données à l'aide du commutateur -d comme ceci :
rails -d mysql myapp
Cependant, il est toujours facile de changer de base de données plus tard, et utiliser SQLite est vraiment plus facile si vous développez sur un Mac.
Sur un nouveau projet, c'est simple :
rails new your_new_project_name -d mysql
Sur un projet existant, définitivement plus délicat.Cela m'a posé un certain nombre de problèmes sur les projets ferroviaires existants.Ce genre de travail avec moi:
# On Gemfile:
gem 'mysql2', '>= 0.3.18', '< 0.5' # copied from a new project for rails 5.1 :)
gem 'activerecord-mysql-adapter' # needed for mysql..
# On Dockerfile or on CLI:
sudo apt-get install -y mysql-client libmysqlclient-dev
Assurez-vous d’abord que MySQL Gem est installé, sinon ?que de taper la commande suivante dans votre console
gem install mysql2
Ensuite, créez une nouvelle application Rails et définissez la base de données MySQL comme base de données par défaut en tapant la commande suivante dans votre console.
rails new app-name -d mysql
Utilisez la commande suivante pour créer une nouvelle application pour l'API avec la base de données MySQL
rails new <appname> --api -d mysql
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
base de données.yml
# MySQL. Versions 5.1.10 and up are supported.
#
# Install the MySQL driver
# gem install mysql2
#
# Ensure the MySQL gem is defined in your Gemfile
# gem 'mysql2'
#
# And be sure to use new-style password hashing:
# https://dev.mysql.com/doc/refman/5.7/en/password-hashing.html
#
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
host: localhost
database: database_name
username: username
password: secret
development:
<<: *default
# 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:
<<: *default
# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
#
# Instead, provide the password as a unix environment variable when you boot
# the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database
# for a full rundown on how to provide these environment variables in a
# production deployment.
#
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
#
# DATABASE_URL="mysql2://myuser:mypass@localhost/somedatabase"
#
# You can use this database configuration with:
#
# production:
# url: <%= ENV['DATABASE_URL'] %>
#
production:
<<: *default
Fichier de pierres précieuses:
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'