Como usar o MySQL com o aplicativo Ruby On Rails
Ruby on Rails usa SQLite3 como banco de dados padrão. Embora o Sqlite funcione muito bem com Rails, às vezes pode não ser suficiente para sua aplicação Rails. Se você deseja escalabilidade, simultaneidade, centralização e controle, você pode tentar bancos de dados mais robustos, como MySQL ou PostgreSQL. Neste guia, veremos como usar o aplicativo MySQL com Ruby on Rails no Ubuntu Linux.
1. Instale MySQL no Ubuntu
O MySQL está disponível nos repositórios padrão da maioria das distribuições Linux e do tipo Unix.
Para instalar o MySQL no Debian, Ubuntu e seus derivados, execute:
sudo apt install mysql-server mysql-client libmysqlclient-dev
O pacote libmysqlclient-dev
fornece os arquivos necessários para compilar a gem mysql2
. Ruby on Rails usa a gem mysql2
para se conectar ao MySQL quando você configura um aplicativo Rails.
1.1. Configurar senha raiz do MySQL
Em seguida, configure a senha do usuário root do MySQL executando o seguinte comando:
sudo mysql_secure_installation
Digite "y" para configurar o componente VALIDATE PASSWORD:
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
Escolha o nível de validação de senha. As validações de senha disponíveis são baixa, média e forte. Aqui, escolho a validação de senha de baixo nível inserindo zero (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
Em seguida, digite a senha do MySQL Root duas vezes. A senha deve ser forte e ter no mínimo 8 caracteres. Pressione 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 seguir, você responderá uma série de perguntas. Digite y e pressione ENTER para cada pergunta. Isso removerá o usuário anônimo, impedirá o login do usuário root remotamente e removerá o banco de dados de teste.
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!
Feito! Definimos a senha do usuário root do MySQL.
1.2. Instale o driver MySQL
Instale o driver MySQL chamado mysql2
gem que permite que o aplicativo Rails se conecte ao banco de dados MySQL.
gem install mysql2
Tudo feito! As aplicações Rails agora podem se conectar ao servidor de banco de dados MySQL.
Vamos seguir em frente e criar uma nova aplicação Rails com banco de dados MySQL.
2. Use MySQL com aplicativo Ruby on Rails
Para criar uma nova aplicação Rails chamada ostechnixapp
e usar o banco de dados MySQL como banco de dados padrão, execute:
rails new ostechnixapp -d mysql
Isso criará um aplicativo Rails chamado ostechnixapp em um diretório chamado ostechnixapp
e instalará as dependências gem que já são mencionadas em Gemfile
usando bundle install
.
Após criar a aplicação ostechnixapp
, mude para seu diretório:
cd ostechnixapp/
Edite o arquivo de configuração do banco de dados da aplicação:
vi config/database.yml
Na seção padrão, substitua a senha do usuário root
do MySQL pela que você criou anteriormente:
[...]
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password: Password123#@!
socket: /var/run/mysqld/mysqld.sock
[...]
Defina a senha root do MySQL no arquivo de configuração do banco de dados do aplicativo Rails
Salve e feche o arquivo.
Agora crie o novo banco de dados para sua aplicação Rails usando o comando:
rake db:create
Isto criará dois bancos de dados com o nome da sua aplicação Rails. Por exemplo, se o nome do aplicativo for ostechnixapp, ele criará ostechnixapp_development
e ostechnixapp_test
.
Você também pode verificar se os bancos de dados foram criados com sucesso no MySQL.
Faça login no MySQL como usuário root
:
mysql -u root -p
Verifique se os bancos de dados foram criados digitando o seguinte comando:
mysql> show databases;
Exemplo de resultado:
+--------------------------+
| Database |
+--------------------------+
| information_schema |
| mysql |
| ostechnixapp_development |
| ostechnixapp_test |
| performance_schema |
| sys |
+--------------------------+
6 rows in set (0.01 sec)
mysql>
Use MySQL com aplicação Ruby on Rails
Saia do prompt do MySQL.
Agora inicie seu servidor web Rails usando o comando:
rails server -b 0.0.0.0
Isso iniciará seu aplicativo Rails na porta padrão 3000
. Aqui, passamos o argumento -b 0.0.0.0
para acessar a aplicação Rails de qualquer máquina na rede local.
Você pode acessar sua página de teste Rails em seu navegador navegando até a URL: http://ip-address:3000
Página de teste Ruby on Rails
Se você quiser usar uma porta diferente, passe o sinalizador -p junto com o número da porta como abaixo:
rails server -b 0.0.0.0 -p 8080
Agora, você pode acessar sua aplicação Rails usando esta URL: http://ip-address:8080
3. Exclua o aplicativo Rails
Se você usou o banco de dados padrão que é SQLite, você pode excluir o aplicativo Rails simplesmente excluindo seu diretório de aplicativos.
rm -fr ostechnixapp
Se você usou MySQL, primeiro você precisa eliminar os bancos de dados relacionados ao seu aplicativo usando o comando:
rake db:drop
E então exclua o diretório do aplicativo:
rm -fr ostechnixapp
Conclusão
Neste tutorial, discutimos por que precisamos usar bancos de dados de modelo cliente/servidor para nossa aplicação Rails e como criar uma aplicação Rails com banco de dados MySQL. Também vimos como excluir uma aplicação Rails.
Se várias cópias do aplicativo Rails estiverem sendo executadas ao mesmo tempo, vários aplicativos e usuários usando o mesmo banco de dados, você deve se afastar do Sqlite e tentar bancos de dados de modelo cliente/servidor como MySQL. Se você deseja armazenamento local de dados para aplicativos individuais, o Sqlite é mais que suficiente.
Leitura relacionada:
- Como usar PostgreSQL com aplicação Ruby On Rails
- Configurar a conexão do banco de dados usando variável de ambiente no Rails