Создайте новое приложение Ruby on Rails, используя MySQL вместо SQLite.
-
08-06-2019 - |
Вопрос
Я хочу создать свое приложение Rails с MySQL, потому что мне это очень нравится.Как я могу сделать это в последней версии Rails вместо SQLite по умолчанию?
Решение
Если у вас уже есть проект Rails, измените адаптер в 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).
Другие советы
Обычно вы создаете новое приложение Rails, используя
rails ProjectName
Чтобы использовать MySQL, используйте
rails new ProjectName -d mysql
В Rails 3 вы можете использовать эту команду для создания нового проекта с использованием MySQL:
$ rails new projectname -d mysql
Заходим в терминал и пишем:
rails new <project_name> -d mysql
Если вы еще не создали свое приложение, просто перейдите в cmd (для Windows) или терминал (для Linux/Unix) и введите следующую команду, чтобы создать приложение Rails с базой данных MySQL:
$rails new <your_app_name> -d mysql
Он работает для всего, что выше версии Rails 3.Если вы уже создали свое приложение, вы можете сделать одно из двух следующих действий:
- Создать другое имя приложение с базой данных MySQL, перейдите на компакт-диск другое имя/config/ и скопируйте файл data.yml из этого нового приложения.Вставьте его в базу данных.yml ваше_имя_приложения приложение.Но после этого обязательно измените имена баз данных и соответствующим образом установите имя пользователя и пароль вашей базы данных в файле data.yml.
ИЛИ
- Перейти на компакт-диск ваше_имя_приложения/config/ и откройте файл data.yml.Переименуйте следующим образом:
разработка:
адаптер:mysql2
база данных:имя_базы_базы_имя
имя пользователя:корень
пароль:
хозяин:локальный хост
разъем:/tmp/mysql.sock
Кроме того, удалите драгоценный камень «sqlite3» из вашего Gemfile и добавьте драгоценный камень «mysql2».
Если вы используете рельсы 3 или более поздней версии
rails new your_project_name -d mysql
если у вас более ранняя версия
rails new -d mysql your_project_name
Поэтому, прежде чем создавать свой проект, вам нужно найти версию Rails.который вы можете найти по
rails -v
rails -d mysql ProjectName
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
Создать приложение с опцией -d
rails new AppName -d mysql
$ 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 3 вы могли бы сделать
$rails new projectname --database=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
Затем создайте новое приложение Rails и установите базу данных 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
база данных.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'