Ruby on Rails - 数据库设置



在开始本章之前,请确保您的数据库服务器已启动并正在运行。Ruby on Rails 建议创建三个数据库 - 每个环境(开发、测试和生产)一个数据库。按照惯例,它们的名字应该是:

  • library_development
  • library_production
  • library_test

您应该初始化所有三个数据库,并为它们创建一个具有完整读写权限的用户和密码。我们正在为我们的应用程序使用root用户ID。

MySQL 数据库设置

在 MySQL 中,我们正在为我们的应用程序使用root用户ID。您执行此操作的 MySQL 控制台会话看起来类似于:

mysql> create database library_development;
Query OK, 1 row affected (0.01 sec)

mysql> grant all privileges on library_development.*
to 'root'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

您可以对另外两个数据库library_productionlibrary_test执行相同的操作。

配置database.yml

此时,您需要让 Rails 了解数据库的用户名和密码。您可以在database.yml文件中执行此操作,该文件位于您创建的 Rails 应用程序的library\config子目录中。此文件包含 MySQL 数据库的活动配置部分。在您使用的每个部分中,您需要更改用户名和密码行以反映您创建的数据库上的权限。

完成后,它应该如下所示:

development:
   adapter: mysql
   database: library_development
   username: root
   password: [password]
   host: localhost
	
test:
   adapter: mysql
   database: library_test
   username: root
   password: [password]
   host: localhost
   
production:
   adapter: mysql
   database: library_production
   username: root
   password: [password]
   host: localhost

PostgreSQL 数据库设置

默认情况下,PostgreSQL 不提供任何用户。我们必须创建新用户。使用以下命令创建名为rubyuser的用户。

tp> sudo -u postgres createuser rubyuser -s

如果要为新用户创建密码,请使用以下命令。

tp> sudo -u postgres psql

postgres=# \password rubyuser

使用以下命令创建数据库library_development

postgres=# CREATE DATABASE library_development OWNER rubyuser; 

CREATE DATABASE

使用以下命令创建数据库library_production

postgres=# CREATE DATABASE library_production OWNER rubyuser; 

CREATE DATABASE

使用以下命令创建数据库library_test

postgres=# CREATE DATABASE library_test OWNER rubyuser; 

CREATE DATABASE

Ctrl+D终止 PosgreSQL。

配置database.yml

此时,您需要让 Rails 了解数据库的用户名和密码。您可以在database.yml文件中执行此操作,该文件位于您创建的 Rails 应用程序的library\config子目录中。此文件包含 PostgreSQL 数据库的活动配置部分。在每个部分中,您需要更改用户名和密码行以反映您创建的数据库上的权限。

完成后,它应如下所示:

default: &default
   adapter: postgresql
   encoding: unicode
  
development:
   adapter: postgresql
   encoding: unicode
   database: library_development
   username: rubyuser
   password: <Password for rubyuser>

test:
   adapter: postgresql
   encoding: unicode
   database: library_test
   username: rubyuser
   password: <Password for rubyuser>
 
production:
   adapter: postgresql
   encoding: unicode
   database: library_production
   username: rubyuser
   password: <Password for rubyuser>

接下来是什么?

接下来的两章将解释如何对数据库表进行建模,以及如何使用 Rails 迁移来管理这些表。

广告