Crear una nueva aplicación de Ruby on Rails usando MySQL en lugar de SQLite
-
08-06-2019 - |
Pregunta
Quiero crear mi aplicación Rails con MySQL, porque me gusta mucho.Cómo puedo hacer que en la última versión de Rails en lugar de la predeterminada SQLite?
Solución
Si usted ya tiene un proyecto rails, cambie el adaptador en la config/database.yml
archivo mysql
y asegúrese de especificar un nombre de usuario válido y la contraseña y, opcionalmente, un socket:
development:
adapter: mysql2
database: db_name_dev
username: koploper
password:
host: localhost
socket: /tmp/mysql.sock
A continuación, asegúrese de editar tu Gemfile para incluir la mysql2 o activerecord-jdbcmysql-adaptador (si se usa jruby).
Otros consejos
Normalmente, habría que crear una nueva aplicación Rails usando
rails ProjectName
El uso de MySQL, uso
rails new ProjectName -d mysql
Para Rails 3, puede utilizar este comando para crear un nuevo proyecto utilizando mysql:
$ rails new projectname -d mysql
Ir al terminal y escribir:
rails new <project_name> -d mysql
Si usted no ha creado su aplicación sin embargo, sólo tiene que ir a cmd(para windows) o terminal(para linux/unix) y escriba el siguiente comando para crear una aplicación rails con base de datos mysql:
$rails new <your_app_name> -d mysql
Funciona para nada por encima de los rieles de la versión 3.Si usted ya ha creado su aplicación, entonces usted puede hacer una de las 2 siguientes cosas:
- Crear un another_name aplicación con base de datos mysql, vaya a la unidad de cd another_name/config/ y copiar la base de datos.yml archivo de esta nueva aplicación.Pegarlo en la base de datos.yml de your_app_name app.Pero asegúrese de cambiar los nombres de base de datos y establecer nombre de usuario/contraseña de su base de datos en consecuencia en la base de datos.yml archivo después de hacerlo.
O
- Ir a la cd your_app_name/config/ y abrir la base de datos.yml.Cambiar el nombre de la siguiente manera:
desarrollo:
adaptador:mysql2
base de datos:db_name_name
nombre de usuario:raíz
contraseña:
host:localhost
socket:/tmp/mysql.calcetín
Por otra parte, eliminar gem "sqlite3" de su Gemfile y añadir la gema 'mysql2'
Si usted está usando rails 3 o superior versión
rails new your_project_name -d mysql
si usted tiene la versión anterior
rails new -d mysql your_project_name
Así que antes de crear el proyecto que usted necesita para encontrar la versión de rails.que se pueden encontrar por
rails -v
rails -d mysql ProjectName
rails new <project_name> -d mysql
O
rails new projectname
Los cambios en el archivo config/database.yml
development:
adapter: mysql2
database: db_name_name
username: root
password:
host: localhost
socket: /tmp/mysql.sock
Crear una aplicación con la opción-d
rails new AppName -d mysql
$ rails --help
es siempre tu mejor amigo
uso:
$ rails new APP_PATH[options]
también tenga en cuenta que las opciones que debe ser dado después de que el nombre de la aplicación
rails y mysql
$ rails new project_name -d mysql
rieles y postgresql
$ rails new project_name -d postgresql
Usted debe utilizar el modificador -D en lugar de la -d porque va a generar dos aplicaciones y mysql con ninguna documentación de las carpetas.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
Alternativamente, usted sólo tiene que utilizar el --database
opción.
Simplemente vaya a la consola de rails y escriba:
rails new YOURAPPNAME -d mysql
En Rails 3, que podría hacer
$rails new projectname --database=mysql
Si va a crear una nueva aplicación rails puede establecer la base de datos utilizando el modificador-d como esta:
rails -d mysql myapp
Siempre es fácil cambiar la base de datos más adelante, aunque, y el uso de sqlite en realidad es más fácil si se están desarrollando en un Mac.
En el nuevo proyecto de easy peasy:
rails new your_new_project_name -d mysql
En el proyecto existente, definitivamente más complicado.Esto me ha dado una serie de problemas existentes en los rieles de los proyectos.Este tipo de obras 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
Primero asegúrese de que mysql joya está instalado, si no?que escriba el siguiente comando en la consola
gem install mysql2
De crear nueva aplicación rails y el conjunto de bases de datos mysql como base de datos predeterminada escribiendo el siguiente comando en la consola
rails new app-name -d mysql
Utilice el siguiente comando para crear nueva aplicación para la 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
la base de datos.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'