即使默认数据库 SQLite3 与 Ruby on Rails,我们不应该在某些情况下使用它。 例如,如果您的 Rails 应用程序正被大量用户同时访问,则不推荐使用 SQLite。 我们应该尝试更健壮的数据库,如 MySQL 或 PostgreSQL,它们提供可扩展性、并发性、集中化和控制。 我们已经知道如何使用 MySQL 与 Rails 应用程序. 今天,我们将了解如何在 Ubuntu Linux 中将 PostgreSQL 与 Ruby on Rails 应用程序一起使用。
先决条件
我假设您已经在 Linux 系统上安装了最新的 Ruby on Rails。 如果没有,请参阅以下指南。
- 如何在 Linux 中安装 Ruby On Rails
1.安装PostgreSQL
要在 Debian、Ubuntu 及其衍生版本中安装 PostgreSQL,请运行:
$ sudo apt install postgresql postgresql-contrib libpq-dev
此命令将安装 PostgreSQL 以及所有必需的依赖项。 在这里, libpq-dev
是一个 PostgreSQL 库,它允许客户端程序将查询传递给 PostgreSQL 后端服务器并接收这些查询的结果。 当您设置 Rails 应用程序时,需要此库才能连接到 PostgreSQL。
确保 postgresql 服务已启动并在启动时启用:
$ sudo systemctl start postgresql
$ sudo systemctl enable postgresql
要查看 postgresql 服务的当前状态,请运行:
$ systemctl status postgresql
1.1。 创建新的数据库角色
我们需要一个专门的数据库用户(角色)来创建和配置数据库或我们的 Rails 应用程序。
要在 PostgreSQL 中创建新的数据库角色,请从终端运行以下命令:
$ sudo -u postgres createuser -s ostechnix -P
这里,
sudo -u postgres
– 允许您从postgres
帐户。createuser -s ostechnix
– 创建一个名为的新角色ostechnix
具有超级用户权限。-P
– 提示您输入新角色的密码。
2. 在 Linux 中使用 PostgreSQL 和 Ruby on Rails 应用程序
创建一个名为的新 Rails 应用程序 ostechnixapp
并使用 PostgreSQL 作为其默认数据库,运行:
$ rails new ostechnixapp -d postgresql
这将创建一个名为的 Rails 应用程序 ostechnixapp
在一个名为 ostechnixapp
并安装中已经提到的 gem 依赖项 Gemfile
使用 bundle install
.
创建后 ostechnixapp
应用程序,切换到其目录:
$ cd ostechnixapp/
编辑应用程序的数据库配置文件:
$ vi config/database.yml
在下面 default
部分,添加我们在上一步中创建的 PosgreSQL 数据库角色及其密码:
[...]
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# https://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: ostechnix
password: Password123#@!
[...]
将用户名及其密码替换为您自己的。 按 ESC
并输入 :wq
保存和 close 文件。
现在使用命令为您的 Rails 应用程序创建新数据库:
$ rake db:create
这将使用 Rails 应用程序的名称创建两个数据库。 为了 example,如果应用程序名称是 ostechnixapp,那么它会创建 ostechnixapp_development
和 ostechnixapp_test
.
Created database 'ostechnixapp_development' Created database 'ostechnixapp_test'
如果数据库也从 PosgreSQL 成功创建,您可以验证它。
登录到 PosgreSQL:
$ sudo -u postgres psql
在 postgresql 提示符下,运行 l
列出可用的数据库:
postgres=# l
样本输出:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
--------------------------+-----------+----------+---------+---------+-----------------------
ostechnixapp_development | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 |
ostechnixapp_test | ostechnix | UTF8 | C.UTF-8 | C.UTF-8 |
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
postgres=#
Exit 从 PostgreSQL 提示符输入 q
.
postgres=# q
现在使用命令启动 Rails Web 服务器:
$ rails server -b 0.0.0.0
这将在默认端口上启动您的 Rails 应用程序 3000
. 在这里,我们通过了参数 -b 0.0.0.0
为了从局域网上的任何机器访问 Rails 应用程序。
打开您的 Web 浏览器并通过导航到 URL 访问您的 Rails 测试页面: https://ip-address:3000
.

如果要使用不同的端口,请通过 -p 标志以及端口号,如下所示:
$ rails server -b 0.0.0.0 -p 8080
现在,可以从这个 URL 访问 Rails 应用程序: https://ip-address:8080
.
3.删除Rails应用
如果您使用了默认数据库 SQLite,您可以通过简单地删除其 app 目录来删除 Rails 应用程序。
$ rm -fr ostechnixapp
如果您使用过 PostgreSQL,首先您需要使用以下命令删除应用程序的相关数据库:
$ rake db:drop
然后删除应用程序目录:
$ rm -fr ostechnixapp
结论
现在您知道如何使用 PostgreSQL 作为数据库创建 Rails 应用程序了。 就像我已经提到的,如果您的应用程序正被大量用户积极使用,您需要使用 PostgreSQL 或 MySQL。 当您希望将来扩展数据库、从删除系统管理数据库时,这也很有用。
相关阅读:
- 在 Rails 中使用环境变量配置数据库连接