如何在Ruby On Rails应用程序中使用PostgreSQL

即使默认数据库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#@!
[...]

在Rails应用程序数据库配置文件中设置PostgreSQL用户及其密码

用您自己的用户名及其密码替换。 按 ESC 和类型 :wq 保存并关闭文件。

现在,使用以下命令为您的Rails应用程序创建新的数据库:

$ rake db:create

这将使用您的Rails应用程序的名称创建两个数据库。 例如,如果应用程序名称为ostechnixapp,则它将创建 ostechnixapp_developmentostechnixapp_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=# 

将PostgreSQL与Ruby on Rails应用程序一起使用

输入以下内容以退出PostgreSQL提示 q

postgres=# q

现在,使用以下命令启动Rails Web服务器:

$ rails server -b 0.0.0.0

这将在默认端口上启动您的Rails应用程序 3000。 在这里,我们通过了论点 -b 0.0.0.0 为了从局域网上的任何机器访问Rails应用程序。

打开Web浏览器并通过导航到URL来访问Rails测试页面: http://ip-address:3000

Ruby on Rails应用程序测试页面Ruby on Rails应用程序测试页面

如果要使用其他端口,请通过 -p 标记以及端口号,如下所示:

$ rails server -b 0.0.0.0 -p 8080

现在,可以从以下URL访问Rails应用程序: http://ip-address:8080

3.删除Rails应用程序

如果您使用的是默认数据库SQLite,则可以通过简单地删除其应用程序目录来删除Rails应用程序。

$ rm -fr ostechnixapp

如果您使用的是PostgreSQL,首先需要使用以下命令删除应用程序的相关数据库:

$ rake db:drop

然后删除应用程序目录:

$ rm -fr ostechnixapp

结论

现在您知道了如何使用PostgreSQL作为数据库来创建Rails应用程序。 就像我已经提到的那样,如果您的应用程序正被大量用户积极使用,则需要使用PostgreSQL或MySQL。 当您将来希望扩展数据库,从删除系统管理数据库时,这也很有用。

数据库LinuxPostgreSQLRuby on Rails将Postgresql与Rails一起使用

Sidebar