SQLite の代わりに MySQL を使用して新しい Ruby on Rails アプリケーションを作成する
-
08-06-2019 - |
質問
MySQL がとても気に入っているので、MySQL を使用して Rails アプリケーションを作成したいと考えています。デフォルトの SQLite ではなく最新バージョンの Rails でそれを行うにはどうすればよいですか?
解決
すでに 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-adapter (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 の場合) に移動し、次のコマンドを入力して、mysql データベースを使用して Rails アプリケーションを作成します。
$rails new <your_app_name> -d mysql
Rails バージョン 3 以降のもので動作します。すでにアプリを作成している場合は、次の 2 つのいずれかを実行できます。
- を作成します 別の名前 mysql データベースを備えたアプリ、cd に移動 別の名前/config/ に移動し、この新しいアプリから database.yml ファイルをコピーします。それをdatabase.ymlに貼り付けます。 あなたのアプリ名 アプリ。ただし、データベース名を変更し、その後、database.yml ファイルでそれに応じてデータベースのユーザー名とパスワードを設定してください。
または
- CDに移動 あなたのアプリ名/config/ を開き、database.yml を開きます。次のように名前を変更します。
発達:
アダプタ:mysql2
データベース:db_name_name
ユーザー名:根
パスワード:
ホスト:ローカルホスト
ソケット:/tmp/mysql.sock
さらに、Gemfile から gem 'sqlite3' を削除し、gem 'mysql2' を追加します。
Rails 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 を使用する必要があります。これは、ドキュメント フォルダーのない 2 つのアプリと mysql を生成するためです。
rails -D mysql project_name (less than version 3)
rails new project_name -D mysql (version 3 and up)
あるいは、単に使用します --database
オプション。
Rails コンソールに移動して次のように入力するだけです。
rails new YOURAPPNAME -d mysql
Rails 3 では、次のことができます
$rails new projectname --database=mysql
新しい Rails アプリケーションを作成している場合は、次のように -d スイッチを使用してデータベースを設定できます。
rails -d mysql myapp
ただし、後でデータベースを切り替えるのはいつでも簡単です。Mac で開発している場合は、sqlite を使用する方が本当に簡単です。
新しいプロジェクトについては、簡単です:
rails new your_new_project_name -d mysql
既存のプロジェクトでは、間違いなくより複雑です。これにより、既存の Rails プロジェクトに多くの問題が発生しました。これは私にとってはうまくいきます:
# 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 がインストールされていることを確認します (インストールされていない場合)。コンソールに次のコマンドを入力するよりも
gem install mysql2
新しい Rails アプリを作成し、コンソールで次のコマンドを入力して mysql データベースをデフォルトのデータベースとして設定します。
rails new app-name -d mysql
次のコマンドを使用して、mysql データベースを使用して API 用の新しいアプリを作成します
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'