使用 MySQL 而不是 SQLite 创建新的 Ruby on Rails 应用程序
-
08-06-2019 - |
题
我想用 MySQL 创建我的 Rails 应用程序,因为我非常喜欢它。如何在最新版本的 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-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 文件中更改数据库名称并相应地设置数据库的用户名/密码。
或者
- 转到光盘 你的应用程序名称/config/ 并打开database.yml。重命名如下:
发展:
适配器:mysql2
数据库:数据库名称_名称
用户名:根
密码:
主持人:本地主机
插座:/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]
另请注意,选项应在应用程序名称之后给出
Rails 和 mysql
$ rails new project_name -d mysql
Rails 和 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 控制台并输入:
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
在现有项目上,肯定更棘手。这给我带来了有关现有铁路项目的许多问题。这对我有用:
# 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
宝石文件:
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4', '< 0.6.0'