Criar um novo Ruby on Rails aplicativo usando MySQL em vez de SQLite
-
08-06-2019 - |
Pergunta
Eu quero criar a minha aplicação Rails com o MySQL, porque eu gosto tanto.Como posso fazer isso na mais recente versão do Rails, em vez do padrão SQLite?
Solução
Se você já tem o rails projeto, alterar o adaptador no config/database.yml
para arquivo mysql
e certifique-se de que você especificar um nome de utilizador válido e palavra-passe e, opcionalmente, um socket:
development:
adapter: mysql2
database: db_name_dev
username: koploper
password:
host: localhost
socket: /tmp/mysql.sock
De seguida, certifique-se de editar o seu Gemfile para incluir o mysql2 ou o activerecord-jdbcmysql-adaptador (se utilizar o jruby).
Outras dicas
Normalmente, você deve criar um novo aplicativo usando Rails
rails ProjectName
A utilização do MySQL, uso
rails new ProjectName -d mysql
Para Rails 3, você pode usar este comando para criar um novo projeto usando o mysql:
$ rails new projectname -d mysql
Vá para o terminal e escreva:
rails new <project_name> -d mysql
Se você não tiver criado o seu aplicativo ainda, basta ir ao cmd(para windows) ou terminal(linux/unix) e digite o seguinte comando para criar uma aplicação rails com banco de dados mysql:
$rails new <your_app_name> -d mysql
Ele funciona para qualquer coisa acima de trilhos versão 3.Se você já criou o seu aplicativo e, em seguida, você pode fazer um dos 2 seguintes coisas:
- Criar um another_name aplicativo com banco de dados mysql, vá para cd another_name/config/ e copie o banco de dados.yml arquivo deste novo aplicativo.Cole-o no banco de dados.yml de your_app_name app.Mas certifique-se de alterar os nomes de banco de dados e definir um nome de utilizador/palavra-passe da base de dados de acordo com o banco de dados.yml arquivo depois de fazê-lo.
OU
- Ir para cd your_app_name/config/ e abra o banco de dados.yml.Mude o nome conforme a seguir:
desenvolvimento:
adaptador:mysql2
banco de dados:db_name_name
nome de usuário:raiz
palavra-passe:
host:localhost
soquete:/tmp/mysql.meia
Além disso, remover gem 'sqlite3' a partir de seu Gemfile e adicionar a gem 'mysql2'
Se você estiver usando o rails 3 ou superior versão
rails new your_project_name -d mysql
se você tiver uma versão anterior
rails new -d mysql your_project_name
Então, antes de você criar o seu projeto, você precisa encontrar os trilhos da versão.que você pode encontrar por
rails -v
rails -d mysql ProjectName
rails new <project_name> -d mysql
OU
rails new projectname
Alterações no config/banco de dados.yml
development:
adapter: mysql2
database: db_name_name
username: root
password:
host: localhost
socket: /tmp/mysql.sock
Criar aplicativo com a opção-d
rails new AppName -d mysql
$ rails --help
é sempre seu melhor amigo
uso:
$ rails new APP_PATH[options]
também nota-se que as opções devem ser dadas após o nome da aplicação
rails e mysql
$ rails new project_name -d mysql
rails e postgresql
$ rails new project_name -d postgresql
Você deve usar a opção -D em vez de d, pois isso vai gerar dois aplicativos e mysql sem documentação pastas.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
Em alternativa, basta usar a --database
opção.
Basta ir para o rails console e digite:
rails new YOURAPPNAME -d mysql
No Rails 3, você pode fazer
$rails new projectname --database=mysql
Se você estiver criando uma nova aplicação rails você pode definir o banco de dados usando a opção-d, como este:
rails -d mysql myapp
É sempre fácil mudar o seu banco de dados mais tarde, porém, e usando sqlite é realmente mais fácil se você estiver desenvolvendo em um Mac.
No novo projeto, peasy fácil:
rails new your_new_project_name -d mysql
No projeto existente, definitivamente complicado.Isso me deu um certo número de questões existentes no rails projetos.Este tipo de obras, comigo:
# 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
Primeiro certifique-se de que a gem do mysql está instalado, se não?que tipo de comando a seguir em seu console
gem install mysql2
Do que criar novos trilhos aplicativo e definir banco de dados mysql como banco de dados padrão digitando o seguinte comando no console
rails new app-name -d mysql
Use o seguinte comando para criar novo aplicativo para a API de banco de dados mysql
rails new <appname> --api -d mysql
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
de banco de dados.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'