Skep 'n nuwe Ruby on Rails aansoek met behulp van MySQL in plaas van SQLite
-
08-06-2019 - |
Vra
Ek wil my Rails aansoek met MySQL te skep, want ek wil dit so baie. Hoe kan ek dit in die jongste weergawe van Rails in plaas van die standaard SQLite doen?
Oplossing
As jy reeds 'n relings projek, verander die adapter in die config/database.yml
lêer te mysql
en maak seker dat jy 'n geldige gebruikersnaam en wagwoord, spesifiseer en opsioneel, 'n potjie:
development:
adapter: mysql2
database: db_name_dev
username: koploper
password:
host: localhost
socket: /tmp/mysql.sock
Volgende, maak seker dat jy wysig jou Gemfile om die mysql2 of activerecord-jdbcmysql-adapter sluit (indien gebruik jruby).
Ander wenke
Normaalweg sou jy 'n nuwe Rails app skep met behulp van
rails ProjectName
Om MySQL gebruik, gebruik
rails new ProjectName -d mysql
Vir Rails 3 jy kan hierdie opdrag gebruik om 'n nuwe projek te skep met behulp van mysql:
$ rails new projectname -d mysql
Gaan na die terminale en skryf:
rails new <project_name> -d mysql
As jy jou program nog nie geskep, gaan net na cmd (vir Windows) of terminale (vir Linux / Unix) en tik die volgende opdrag om 'n relings aansoek met MySQL databasis te skep:
$rails new <your_app_name> -d mysql
Dit werk vir enigiets bo relings weergawe 3. As jy reeds jou program geskep is, dan kan jy een van die 2 volgende dinge doen:
- Skep 'n another_name app met MySQL databasis, gaan na cd another_name / config / en kopieer die database.yml lêer van hierdie nuwe app. Plak dit in die database.yml van your_app_name app. Maar verseker om die databasis name en stel gebruikersnaam / wagwoord van jou databasis dienooreenkomstig in die database.yml lêer verander na dit te doen.
OR
- Gaan na cd your_app_name / config / en oop database.yml. Hernoem as volg:
ontwikkeling:
adapter: mysql2
databasis: db_name_name
gebruikersnaam: wortel
wagwoord:
gasheer: localhost
socket: /tmp/mysql.sock
Verder, verwyder juweel 'sqlite3' uit jou Gemfile en voeg die juweel 'mysql2'
As jy 'relings 3 of meer weergawe
rails new your_project_name -d mysql
As jy vroeër weergawe
rails new -d mysql your_project_name
Dus, voordat jy jou projek te skep wat jy nodig het om die relings weergawe vind. wat jy kan vind by
rails -v
rails -d mysql ProjectName
rails new <project_name> -d mysql
OR
rails new projectname
Wysigings in config / database.yml
development:
adapter: mysql2
database: db_name_name
username: root
password:
host: localhost
socket: /tmp/mysql.sock
Skep aansoek met d opsie
rails new AppName -d mysql
$ rails --help
is altyd jou beste vriend
gebruik:
$ rails new APP_PATH[options]
ook daarop dat opsies gegee moet word nadat die naam aansoek
relings en mysql
$ rails new project_name -d mysql
relings en postgresql
$ rails new project_name -d postgresql
Jy moet die skakelaar gebruik -D in plaas van d omdat dit twee programme en mysql met geen dokumentasie dopgehou sal genereer.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
Alternatiewelik kan jy net gebruik maak van die opsie --database
.
Gaan net na konsole en tipe relings:
rails new YOURAPPNAME -d mysql
In Rails 3, kan jy dit doen
$rails new projectname --database=mysql
As jy die skep van 'n nuwe relings aansoek kan jy die databasis opgestel met behulp van die d skakelaar soos volg:
rails -d mysql myapp
Dit is altyd maklik om jou databasis later al oorskakel, en met behulp van sQLite is regtig makliker as jy die ontwikkeling van 'n Mac.
Op nuwe projek, maklik peasy:
rails new your_new_project_name -d mysql
Op bestaande projek, beslis moeiliker. Dit het my 'n aantal kwessies wat op bestaande spore projekte. Hierdie soort van werke met my:
# 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
Maak eers seker dat mysql juweel geïnstalleer is, indien nie? as tipe volgende opdrag in jou console
gem install mysql2
As skep nuwe relings inligting en stel MySQL databasis as verstek databasis deur te tik volgende opdrag in jou console
rails new app-name -d mysql
Gebruik volgende opdrag om nuwe artikels vir API met MySQL databasis te skep
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'