Crie um novo aplicativo Ruby on Rails usando MySQL em vez de SQLite

130

Eu quero criar meu aplicativo Rails com o MySQL, porque eu gosto muito. Como posso fazer isso na versão mais recente do Rails, em vez do SQLite padrão?

Daniel Broekman
fonte

Respostas:

140

Se você já possui um projeto rails, altere o adaptador no config/database.ymlarquivo para mysqle certifique-se de especificar um nome de usuário e senha válidos e, opcionalmente, um soquete:

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

Em seguida, certifique-se de editar seu Gemfile para incluir o mysql2 ou o activerecord-jdbcmysql-adapter (se estiver usando o jruby).

Michiel de Mare
fonte
2
Isso é útil; como as outras respostas basta usar o gerador. Esta resposta funciona para adicionar o MySQL a um aplicativo depois que ele já foi criado, para substituir um banco de dados existente (por exemplo, SQLite) ou para adicionar um banco de dados secundário. Além disso, o mysql2 parece ser o item mais procurado atualmente pelo Rails.
RCD
13
você também terá que atualizar o Gemfile; remover gem 'sqlite3'e adicionargem 'mysql2'
RGB
262

Normalmente, você criaria um novo aplicativo Rails usando

rails ProjectName

Para usar o MySQL, use

rails new ProjectName -d mysql
Daniel Broekman
fonte
56

Para o Rails 3, você pode usar este comando para criar um novo projeto usando o mysql:

$ rails new projectname -d mysql
Robbie Done
fonte
24

Vá para o terminal e escreva:

rails new <project_name> -d mysql
Abhinav
fonte
22

Se você ainda não criou seu aplicativo, vá para cmd (para windows) ou terminal (para linux / unix) e digite o seguinte comando para criar um aplicativo rails com o banco de dados mysql:

$rails new <your_app_name> -d mysql

Funciona para qualquer coisa acima da versão 3. do rails. Se você já criou seu aplicativo, pode executar um dos seguintes procedimentos:

  1. Crie um aplicativo another_name com o banco de dados mysql, acesse cd another_name / config / e copie o arquivo database.yml deste novo aplicativo. Cole-o no database.yml do aplicativo your_app_name . Mas lembre-se de alterar os nomes dos bancos de dados e defina o nome de usuário / senha do banco de dados de acordo com o arquivo database.yml depois de fazer isso.

OU

  1. Vá para cd your_app_name / config / e abra database.yml. Renomeie da seguinte maneira:

desenvolvimento:
adaptador:
banco de dados mysql2 : db_name_name
nome de usuário: root
senha:
host: localhost
socket: /tmp/mysql.sock

Além disso, remova a gem 'sqlite3' do seu Gemfile e adicione a gem 'mysql2'

Drake Mandin
fonte
13

Se você estiver usando os trilhos versão 3 ou superior

rails new your_project_name -d mysql

se você tem versão anterior

rails new -d mysql your_project_name

Portanto, antes de criar seu projeto, você precisa encontrar a versão do rails. que você pode encontrar por

rails -v
Codificador
fonte
12
rails -d mysql ProjectName
huacnlee
fonte
11
rails new <project_name> -d mysql

OU

rails new projectname

Alterações em config / database.yml

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

Criar aplicativo com a opção -d

rails new AppName -d mysql
Dipali Nagrale
fonte
Funcionou perfeitamente para mim!
12123 Luke
9
$ rails --help 

é sempre seu melhor amigo

uso:

$ rails new APP_PATH[options]

Observe também que as opções devem ser dadas após o nome do aplicativo

trilhos e mysql

$ rails new project_name -d mysql

trilhos e postgresql

$ rails new project_name -d postgresql
George Bellos
fonte
8

Você deve usar a opção -D em vez de -d, pois ela gerará dois aplicativos e o mysql sem pastas de documentação.

  rails -D mysql project_name  (less than version 3)

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

Como alternativa, você apenas usa a --databaseopção

Marthinus A. Botha
fonte
7

Basta ir ao console do Rails e digite:

rails new YOURAPPNAME -d mysql
Amarpreet Jethra
fonte
6

No Rails 3, você poderia fazer

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

Se você estiver criando um novo aplicativo de trilhos, poderá definir o banco de dados usando a opção -d como esta:

rails -d mysql myapp

É sempre fácil alternar seu banco de dados posteriormente, e usar o sqlite é realmente mais fácil se você estiver desenvolvendo em um Mac.

James Avery
fonte
3

Em novo projeto, fácil de usar:

rails new your_new_project_name -d mysql

No projeto existente, definitivamente mais complicado. Isso me deu várias questões em projetos de trilhos existentes. Esse tipo de funciona 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 
Riccardo
fonte
2

Primeiro verifique se o mysql gem está instalado, se não? que digite o seguinte comando no seu console

gem install mysql2

Em seguida, crie um novo aplicativo rails e defina o banco de dados mysql como banco de dados padrão, digitando o seguinte comando no console

rails new app-name -d mysql
Shabbir
fonte
1
você deseja adicionar a gema ao Gemfile.
Riccardo
0

Use o comando a seguir para criar um novo aplicativo para API com 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
Dinesh Vaitage
fonte
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
fonte
0

você deve primeiro certificar-se de que o driver MySQL esteja no seu sistema, se não o executar no seu terminal, se você estiver usando o Ubuntu ou qualquer distribuição Debian

sudo apt-get install mysql-client libmysqlclient-dev

e adicione isso ao seu Gemfile

gem 'mysql2', '~> 0.3.16'

então execute no seu diretório raiz do projeto

bundle install

depois disso, você pode adicionar a configuração do mysql ao config / database.yml como as respostas anteriores

Muhammad Elbadawy
fonte