Rubí sobre rieles utiliza SQLite3 como su base de datos predeterminada. Si bien Sqlite funciona muy bien con Rails, algunas veces puede no ser suficiente para su aplicación Rails. Si desea escalabilidad, concurrencia, centralización y control, puede probar bases de datos más robustas como MySQL o PostgreSQL. En esta guía, veremos cómo usar MySQL con la aplicación Ruby on Rails en Ubuntu Linux.
1. Instalar MySQL en Ubuntu
MySQL está disponible en los repositorios predeterminados de la mayoría de las distribuciones de Linux y Unix.
Para instalar MySQL en Debian, Ubuntu y sus derivados, ejecute:
$ sudo apt install mysql-server mysql-client libmysqlclient-dev
El libmysqlclient-dev
El paquete proporciona los archivos necesarios para compilar mysql2
joya. Ruby on Rails usa mysql2
gem para conectarse a MySQL cuando configura una aplicación Rails.
1.1. Configurar la contraseña raíz de MySQL
A continuación, configure la contraseña de usuario raíz de MySQL ejecutando el siguiente comando:
$ sudo mysql_secure_installation
Introduzca "y" para configurar el componente VALIDAR CONTRASEÑA:
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y
Elija el nivel de validación de la contraseña. Las validaciones de contraseña disponibles son bajas , medio y fuerte . Aquí, elijo la validación de contraseña de bajo nivel ingresando cero (0).
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
Luego, ingrese la contraseña de MySQL Root dos veces. La contraseña debe ser segura y debe tener un mínimo de 8 caracteres. Presiona Y para continuar:
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
A continuación, se le hará una serie de preguntas. Escriba y y presione ENTER para cada pregunta. Esto eliminará al usuario anónimo, no permitirá que el usuario raíz inicie sesión de forma remota y eliminará la base de datos de prueba.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y Success. Normally, root should only be allowed to connect from 'localhost'. This ensures that someone cannot guess at the root password from the network. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL comes with a database named 'test' that anyone can access. This is also intended only for testing, and should be removed before moving into a production environment. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y Success. All done!
¡Hecho! Hemos configurado la contraseña del usuario root de MySQL.
1.2. Instale el controlador MySQL
Instale el controlador MySQL llamado mysql2
gema que permite que la aplicación Rails se conecte a la base de datos MySQL.
$ gem install mysql2
¡Todo listo! Las aplicaciones Rails ahora pueden conectarse al servidor de base de datos MySQL.
Avancemos y creemos una nueva aplicación Rails con base de datos MySQL.
2. Usar MySQL con la aplicación Ruby on Rails
Para crear una nueva aplicación Rails llamada ostechnixapp
y use la base de datos MySQL como su base de datos predeterminada, ejecute:
$ rails new ostechnixapp -d mysql
Esto creará una aplicación Rails llamada ostechnixapp en un directorio llamado ostechnixapp
e instale las dependencias de gemas que ya se mencionan en Gemfile
usando bundle install
.
Después de crear la ostechnixapp
aplicación, cambie a su directorio:
$ cd ostechnixapp/
Edite el archivo de configuración de la base de datos de la aplicación:
$ vi config/database.yml
En la sección predeterminada, reemplace MySQL root
contraseña de usuario con la que creó anteriormente:
[...] default: &default adapter: mysql2 encoding: utf8mb4 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> username: root password: Password123#@! socket: /var/run/mysqld/mysqld.sock [...]
Guarde y cierre el archivo.
Ahora cree la nueva base de datos para su aplicación Rails usando el comando:
$ rake db:create
Esto creará dos bases de datos con el nombre de su aplicación Rails. Por ejemplo, si el nombre de la aplicación es ostechnixapp, creará ostechnixapp_development
y ostechnixapp_test
.
También puede verificar si las bases de datos se crearon correctamente desde MySQL.
Inicie sesión en MySQL como root
usuario:
$ mysql -u root -p
Verifique si las bases de datos se crean ingresando el siguiente comando:
mysql> show databases;
Salida de muestra:
+--------------------------+ | Database | +--------------------------+ | information_schema | | mysql | | ostechnixapp_development | | ostechnixapp_test | | performance_schema | | sys | +--------------------------+ 6 rows in set (0.01 sec) mysql>
Salga del indicador de MySQL.
Ahora inicie su servidor web Rails usando el comando:
$ rails server -b 0.0.0.0
Esto iniciará su aplicación Rails en el puerto predeterminado 3000
. Aquí, pasamos el argumento -b 0.0.0.0
para acceder a la aplicación Rails desde cualquier máquina en la red de área local.
Puede acceder a su página de prueba de Rails en su navegador web navegando a la URL:http://ip-address:3000
Si desea utilizar un puerto diferente, pase -p marca junto con el número de puerto como se muestra a continuación:
$ rails server -b 0.0.0.0 -p 8080
Ahora puede acceder a su aplicación Rails utilizando esta URL:http://ip-address:8080
3. Eliminar la aplicación Rails
Si ha utilizado la base de datos predeterminada que es SQLite, puede eliminar la aplicación Rails simplemente eliminando su directorio de aplicaciones.
$ rm -fr ostechnixapp
Si usó MySQL, primero debe eliminar las bases de datos relacionadas de su aplicación usando el comando:
$ rake db:drop
Y luego elimine el directorio de la aplicación:
$ rm -fr ostechnixapp
Conclusión
En este tutorial, discutimos por qué necesitamos usar bases de datos modelo cliente/servidor para nuestra aplicación Rails y cómo crear una aplicación Rails con una base de datos MySQL. También hemos visto cómo eliminar una aplicación de Rails.
Si varias copias de la aplicación Rails se ejecutan al mismo tiempo, varias aplicaciones y usuarios usan la misma base de datos, debe alejarse de Sqlite y probar bases de datos modelo cliente/servidor como MySQL. Si desea almacenamiento local de datos para aplicaciones individuales, Sqlite es más que suficiente.
Lectura relacionada:
- Cómo usar PostgreSQL con la aplicación Ruby on Rails
- Configurar la conexión de la base de datos usando la variable de entorno en Rails