TheOdinProject 教程:在 Rails 项目中安装配置 PostgreSQL
前言
在 Rails 开发中,数据库的选择对项目有着深远影响。虽然 Rails 默认使用 SQLite 作为开发数据库,但在生产环境中,PostgreSQL 通常是更专业的选择。本文将详细介绍如何在 Rails 项目中安装和配置 PostgreSQL 数据库。
为什么选择 PostgreSQL
生产环境考量
SQLite 虽然简单易用,但在生产环境中存在明显局限:
- 许多托管服务使用临时文件系统,可能导致数据库被意外删除
- 并发写入性能较差
- 缺乏完善的用户权限系统
开发与生产环境一致性
保持开发环境与生产环境一致可以避免"在我机器上能运行"的问题。使用 PostgreSQL 作为开发数据库能确保:
- 数据迁移脚本在生产环境能正确执行
- 查询优化策略在不同环境表现一致
- 避免因数据库差异导致的意外行为
环境概念解析
开发环境类型
典型的应用开发会涉及四种环境:
- 开发环境:开发者本地机器,用于自由修改和测试代码
- 测试环境:专门用于自动化测试,可能有更详细的日志记录
- 预发布环境:模拟生产环境,用于最终验证
- 生产环境:实际面向用户的环境
环境变量的重要性
环境变量是操作系统提供的键值存储机制,在 Rails 开发中特别有用:
- 保护敏感信息(如数据库密码、API密钥)不被提交到版本控制
- 允许不同环境使用不同配置
- Rails 会读取
RAILS_ENV
变量确定当前环境(默认为开发环境)
PostgreSQL 安装指南
Linux 系统安装
1. 系统更新
sudo apt update && sudo apt upgrade
2. 安装 PostgreSQL
sudo apt install postgresql postgresql-contrib libpq-dev
3. 启动服务
sudo systemctl start postgresql.service
4. 创建角色
sudo -i -u postgres createuser --interactive
创建与当前 Linux 用户名相同的超级用户角色。
5. 创建角色数据库
sudo -i -u postgres createdb <用户名>
6. 设置密码
psql
\password <用户名>
GRANT ALL PRIVILEGES ON DATABASE <数据库名> TO <用户名>;
7. 保存密码到环境变量
echo 'export DATABASE_PASSWORD="<密码>"' >> ~/.bashrc
macOS 系统安装
推荐使用 Postgres.app 安装:
- 访问 Postgres.app 官网下载安装
- 配置 PATH 环境变量:
sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | sudo tee /etc/paths.d/postgresapp
macOS 安装后默认使用信任认证,无需密码即可本地连接。
创建 PostgreSQL 支持的 Rails 应用
1. 安装 pg gem
gem install pg
2. 创建新应用
rails new <应用名> --database=postgresql
3. 配置数据库
编辑 config/database.yml
:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <角色名>
password: <%= ENV['DATABASE_PASSWORD'] %>
4. 创建数据库
rails db:create
5. 启动服务器
rails s
访问 localhost:3000
验证安装是否成功。
常见问题排查
- 连接失败:检查用户名/密码是否正确,确保角色有数据库访问权限
- 数据库创建失败:确认 PostgreSQL 服务正在运行
- 认证错误:检查
pg_hba.conf
文件中的认证方法设置
最佳实践
- 为每个项目创建独立的 PostgreSQL 角色和数据库
- 使用不同的密码区分开发和生产环境
- 考虑使用 dotenv 等工具管理环境变量
- 定期备份开发数据库中的重要数据
通过本文的指导,您应该已经成功在 Rails 项目中配置了 PostgreSQL 数据库。这将为后续开发更复杂的应用打下坚实基础。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考