Voglio creare la mia applicazione Rails con MySQL, perché mi piace così tanto. Come posso farlo nell'ultima versione di Rails anziché nello SQLite predefinito?
Voglio creare la mia applicazione Rails con MySQL, perché mi piace così tanto. Come posso farlo nell'ultima versione di Rails anziché nello SQLite predefinito?
Risposte:
Se disponi già di un progetto rails, modifica l'adattatore nel config/database.yml
file mysql
e assicurati di specificare un nome utente e una password validi e, facoltativamente, un socket:
development:
adapter: mysql2
database: db_name_dev
username: koploper
password:
host: localhost
socket: /tmp/mysql.sock
Quindi, assicurati di modificare il tuo Gemfile per includere mysql2 o activerecord-jdbcmysql-adapter (se usi jruby).
gem 'sqlite3'
e aggiungigem 'mysql2'
Normalmente, crei una nuova app Rails usando
rails ProjectName
Per usare MySQL, usa
rails new ProjectName -d mysql
Per Rails 3 puoi usare questo comando per creare un nuovo progetto usando mysql:
$ rails new projectname -d mysql
Se non hai ancora creato la tua app, vai su cmd (per Windows) o sul terminale (per Linux / Unix) e digita il seguente comando per creare un'applicazione rails con il database mysql:
$rails new <your_app_name> -d mysql
Funziona con qualsiasi cosa sopra le rotaie versione 3. Se hai già creato la tua app, puoi fare una delle 2 cose seguenti:
O
sviluppo:
adattatore:
database mysql2 : nome_db
nome_utente:
password di root :
host: localhost
socket : /tmp/mysql.sock
Inoltre, rimuovi la gemma 'sqlite3' dal tuo Gemfile e aggiungi la gemma 'mysql2'
Se stai usando rotaie 3 o versione successiva
rails new your_project_name -d mysql
se hai una versione precedente
rails new -d mysql your_project_name
Quindi, prima di creare il tuo progetto, devi trovare la versione delle rotaie. che puoi trovare vicino
rails -v
rails new <project_name> -d mysql
O
rails new projectname
Modifiche in config / database.yml
development:
adapter: mysql2
database: db_name_name
username: root
password:
host: localhost
socket: /tmp/mysql.sock
Crea un'applicazione con l'opzione -d
rails new AppName -d mysql
$ rails --help
è sempre il tuo migliore amico
utilizzo:
$ rails new APP_PATH[options]
si noti inoltre che le opzioni devono essere fornite dopo il nome dell'applicazione
rotaie e mysql
$ rails new project_name -d mysql
rotaie e postgresql
$ rails new project_name -d postgresql
Dovresti usare l'opzione -D invece di -d perché genererà due app e mysql senza cartelle di documentazione.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
In alternativa basta usare l' --database
opzione.
Vai alla console di rotaie e digita:
rails new YOURAPPNAME -d mysql
Se si sta creando una nuova applicazione rails, è possibile impostare il database usando l'opzione -d in questo modo:
rails -d mysql myapp
Tuttavia, è sempre facile cambiare il database in un secondo momento, e l'utilizzo di sqlite è davvero più semplice se si sta sviluppando su un Mac.
Su un nuovo progetto, facile peasy:
rails new your_new_project_name -d mysql
Sul progetto esistente, decisamente più complicato. Questo mi ha dato una serie di problemi sui progetti di binari esistenti. Questo tipo di lavoro con me:
# 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
Per prima cosa assicurati che mysql gem sia installato, in caso contrario? quindi digita il seguente comando nella tua console
gem install mysql2
Quindi crea una nuova app rotaie e imposta il database mysql come database predefinito digitando il seguente comando nella tua console
rails new app-name -d mysql
Utilizzare il comando seguente per creare una nuova app per API con database mysql
rails new <appname> --api -d mysql
adapter: mysql2
encoding: utf8
pool: 5
username: root
password:
socket: /var/run/mysqld/mysqld.sock
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'
dovresti prima assicurarti che il driver MySQL sia sul tuo sistema se non eseguilo sul tuo terminale se stai usando Ubuntu o qualsiasi distribuzione Debian
sudo apt-get install mysql-client libmysqlclient-dev
e aggiungilo al tuo Gemfile
gem 'mysql2', '~> 0.3.16'
quindi esegui nella directory principale del progetto
bundle install
successivamente è possibile aggiungere mysql config a config / database.yml come risposte precedenti