Cree una nueva aplicación Ruby on Rails usando MySQL en lugar de SQLite

130

Quiero crear mi aplicación Rails con MySQL, porque me gusta mucho. ¿Cómo puedo hacer eso en la última versión de Rails en lugar del SQLite predeterminado?

Daniel Broekman
fuente

Respuestas:

140

Si ya tiene un proyecto de rieles, cambie el adaptador en el config/database.ymlarchivo mysqly asegúrese de especificar un nombre de usuario y contraseña válidos y, opcionalmente, un socket:

development:
  adapter: mysql2
  database: db_name_dev
  username: koploper
  password:
  host: localhost
  socket: /tmp/mysql.sock

Luego, asegúrese de editar su Gemfile para incluir el mysql2 o activerecord-jdbcmysql-adapter (si usa jruby).

Michiel de Mare
fuente
2
Esto es útil; como las otras respuestas solo usa el generador. Esta respuesta funciona para agregar MySQL a una aplicación después de que ya se haya creado, ya sea para reemplazar una base de datos existente (por ejemplo, SQLite) o para agregar una base de datos secundaria. Además, mysql2 parece ser la joya favorita en estos días para Rails.
rcd
13
también tendrás que actualizar el Gemfile; eliminar gem 'sqlite3'y agregargem 'mysql2'
RGB
262

Normalmente, crearía una nueva aplicación Rails usando

rails ProjectName

Para usar MySQL, use

rails new ProjectName -d mysql
Daniel Broekman
fuente
56

Para Rails 3 puede usar este comando para crear un nuevo proyecto usando mysql:

$ rails new projectname -d mysql
Robbie Done
fuente
24

Ve a la terminal y escribe:

rails new <project_name> -d mysql
Abhinav
fuente
22

Si aún no ha creado su aplicación, simplemente vaya a cmd (para Windows) o terminal (para Linux / Unix) y escriba el siguiente comando para crear una aplicación Rails con la base de datos MySQL:

$rails new <your_app_name> -d mysql

Funciona para cualquier cosa por encima de la versión 3 de Rails. Si ya ha creado su aplicación, puede hacer una de las 2 cosas siguientes:

  1. Cree una aplicación another_name con la base de datos mysql, vaya a cd another_name / config / y copie el archivo database.yml de esta nueva aplicación. Péguelo en la base de datos.yml de la aplicación your_app_name . Pero asegúrese de cambiar los nombres de la base de datos y establecer el nombre de usuario / contraseña de su base de datos en consecuencia en el archivo database.yml después de hacerlo.

O

  1. Vaya a cd your_app_name / config / y abra database.yml. Renombrar de la siguiente manera:

desarrollo:
adaptador: base de
datos mysql2 : db_name_name
nombre de usuario: root root
:
host: localhost
socket: /tmp/mysql.sock

Además, elimine la gema 'sqlite3' de su Gemfile y agregue la gema 'mysql2'

Drake Mandin
fuente
13

Si está utilizando rails 3 o una versión superior

rails new your_project_name -d mysql

si tienes una versión anterior

rails new -d mysql your_project_name

Entonces, antes de crear su proyecto, necesita encontrar la versión de rieles. que puedes encontrar por

rails -v
Descifrador
fuente
12
rails -d mysql ProjectName
Huacnlee
fuente
11
rails new <project_name> -d mysql

O

rails new projectname

Cambios en config / database.yml

development:
  adapter: mysql2
  database: db_name_name
  username: root
  password:
  host: localhost
  socket: /tmp/mysql.sock
vijay chouhan
fuente
11

Crear aplicación con la opción -d

rails new AppName -d mysql
Dipali Nagrale
fuente
¡Funcionó perfectamente para mí!
Lucas
9
$ rails --help 

siempre es tu mejor amigo

uso:

$ rails new APP_PATH[options]

También tenga en cuenta que las opciones deben darse después del nombre de la aplicación

rieles y mysql

$ rails new project_name -d mysql

rieles y postgresql

$ rails new project_name -d postgresql
George Bellos
fuente
8

Debe usar el modificador -D en lugar de -d porque generará dos aplicaciones y mysql sin carpetas de documentación.

  rails -D mysql project_name  (less than version 3)

  rails new project_name -D mysql (version 3 and up)

Alternativamente, solo usa la --databaseopción.

Marthinus A. Botha
fuente
7

Simplemente vaya a la consola de rieles y escriba:

rails new YOURAPPNAME -d mysql
Amarpreet Jethra
fuente
6

En Rails 3, podrías hacer

$rails new projectname --database=mysql
andy318
fuente
6

Si está creando una nueva aplicación de rieles, puede configurar la base de datos utilizando el modificador -d de esta manera:

rails -d mysql myapp

Sin embargo, siempre es fácil cambiar su base de datos más adelante, y usar sqlite realmente es más fácil si está desarrollando en una Mac.

James Avery
fuente
3

En un nuevo proyecto, fácil guisante:

rails new your_new_project_name -d mysql

En un proyecto existente, definitivamente más complicado. Esto me ha dado una serie de problemas en proyectos de rieles existentes. Este tipo de trabajo funciona conmigo:

# 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 
Riccardo
fuente
2

Primero asegúrese de que mysql gem esté instalado, si no? que escriba el siguiente comando en su consola

gem install mysql2

Luego, cree una nueva aplicación de rieles y configure la base de datos mysql como base de datos predeterminada escribiendo el siguiente comando en su consola

rails new app-name -d mysql
Shabbir
fuente
1
desea agregar la gema a Gemfile en su lugar.
Riccardo
0

Use el siguiente comando para crear una nueva aplicación para API con la base de datos mysql

rails new <appname> --api -d mysql


  adapter: mysql2
  encoding: utf8
  pool: 5
  username: root
  password: 
  socket: /var/run/mysqld/mysqld.sock
Dinesh Vaitage
fuente
0

database.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

Gemfile :

# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'
artamonovdev
fuente
0

primero debe asegurarse de que el controlador MySQL esté en su sistema si no lo ejecuta en su terminal si está usando Ubuntu o cualquier distribución de Debian

sudo apt-get install mysql-client libmysqlclient-dev

y agrega esto a tu Gemfile

gem 'mysql2', '~> 0.3.16'

luego ejecutar en su directorio raíz del proyecto

bundle install

después de eso, puede agregar la configuración de mysql a config / database.yml como las respuestas anteriores

Muhammad Elbadawy
fuente