Ruby on Rails - 数据库设置


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

  • 图书馆发展
  • 图书馆生产
  • 库测试

您应该初始化所有三个,并为它们创建具有完全读写权限的用户和密码。我们正在为我们的应用程序使用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执行相同的操作。

配置数据库.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不提供任何用户。我们必须创建新用户。使用以下命令创建名为ruby​​user的用户。

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。

配置数据库.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 迁移来管理这些表。