Я хочу створити свою програму Rails за допомогою MySQL, тому що мені це дуже подобається. Як я можу це зробити в останній версії Rails замість SQLite за замовчуванням?
Я хочу створити свою програму Rails за допомогою MySQL, тому що мені це дуже подобається. Як я можу це зробити в останній версії Rails замість SQLite за замовчуванням?
Відповіді:
Якщо у вас вже є проект рейки, замініть адаптер у config/database.yml
файлі на mysql
та переконайтеся, що ви вказали дійсне ім'я користувача та пароль, а також необов'язково - сокет:
development:
adapter: mysql2
database: db_name_dev
username: koploper
password:
host: localhost
socket: /tmp/mysql.sock
Далі переконайтесь, що ви відредагували свій Gemfile, щоб включити mysql2 або activerecord-jdbcmysql-адаптер (якщо використовується jruby).
gem 'sqlite3'
та додатиgem 'mysql2'
Зазвичай ви створюєте нову програму Rails, використовуючи
rails ProjectName
Щоб використовувати MySQL, використовуйте
rails new ProjectName -d mysql
Для Rails 3 ви можете використовувати цю команду для створення нового проекту за допомогою mysql:
$ rails new projectname -d mysql
Якщо ви ще не створили свою програму, просто перейдіть до cmd (для windows) або терміналу (для linux / unix) і введіть наступну команду, щоб створити рейковий додаток з базою даних mysql:
$rails new <your_app_name> -d mysql
Вона працює для будь-якої версії рейки 3. Версія 3. Якщо ви вже створили додаток, то можете зробити одну з двох наступних речей:
АБО
розробка:
адаптер: база
даних mysql2: ім'я db_name_name
ім'я користувача: root
пароль:
хост: localhost
socket: /tmp/mysql.sock
Крім того, видаліть gem 'sqlite3' зі свого Gemfile та додайте дорогоцінний камінь 'mysql2'
rails new <project_name> -d mysql
АБО
rails new projectname
Зміни в config / database.yml
development:
adapter: mysql2
database: db_name_name
username: root
password:
host: localhost
socket: /tmp/mysql.sock
$ rails --help
завжди ваш найкращий друг
використання:
$ rails new APP_PATH[options]
також зауважте, що параметри повинні бути вказані після назви програми
рейки і mysql
$ rails new project_name -d mysql
рейки та postgresql
$ rails new project_name -d postgresql
Вам слід використовувати перемикач -D замість -d, оскільки він генерує дві програми та mysql без папок документації.
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
Або ви просто використовуєте цю --database
опцію.
Просто перейдіть до консолі рейки та введіть:
rails new YOURAPPNAME -d mysql
Якщо ви створюєте нову програму rails, ви можете встановити базу даних за допомогою перемикача -d таким чином:
rails -d mysql myapp
Однак завжди легко переключити вашу базу даних пізніше, а використовувати sqlite дійсно простіше, якщо ви розробляєте на Mac.
На новому проекті, легкий горох:
rails new your_new_project_name -d mysql
Щодо існуючого проекту, безумовно, складніше. Це дало мені ряд питань щодо існуючих проектів рейок. Цей вид роботи зі мною:
# 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
Спочатку переконайтеся, що встановлено дорогоцінний камінь mysql, якщо ні? ніж введіть у консолі наступну команду
gem install mysql2
Після чого створити новий додаток рейлів та встановити базу даних mysql як базу даних за замовчуванням, ввівши наступну команду у консолі
rails new app-name -d mysql
Використовуйте наступну команду, щоб створити новий додаток для API з 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'
спершу слід переконатися, що драйвер MySQL знаходиться у вашій системі, якщо не запускати це на своєму терміналі, якщо ви використовуєте Ubuntu або будь-який дистрибутив Debian
sudo apt-get install mysql-client libmysqlclient-dev
і додайте це до свого Gemfile
gem 'mysql2', '~> 0.3.16'
потім запустіть у вашому кореневому каталозі проекту
bundle install
після цього ви можете додати конфігурацію mysql для config / database.yml як попередні відповіді