我正在尝试将开发(和测试/生产)数据库切换到 PostgreSQL,以便我可以将我的 rails 应用程序部署到 Heroku。
按照他们的指示和 railscast 并在 StackOverflow 和 Google 周围寻找重写我的 database.yml 文件并做其他所有事情的正确方法,但我遇到了很多问题,所以我希望有人能帮我弄清楚我还需要做什么。我将在下面解释我尝试过的内容。
一个主要问题是如何处理我的 database.yml 文件。许多站点不同意,或者根本没有任何池或用户名或编码条目(或者,就此而言,整个生产环境)。这是我环顾四周并结合后得到的结果。这应该工作吗?:
development:
adapter: postgresql
encoding: unicode
database: <appname>_development
pool: 5
username: <username>
password: <password>
test:
adapter: postgresql
database: <appname>_test
username: <username>
password: <password>
host: localhost
什么是池?我需要编码吗?为什么这么多示例在 yml 文件中没有生产部分?
根据 Railscast 的建议,我自制安装了 PostgreSQL,然后初始化了数据库,然后执行了这一行。
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
在另一个 StackOverflow 回答之后,我确保我的 Postgres 位于 /usr/local/bin/postgres 目录中,并将这一行添加到我的 .bash_profile 文件中。
export PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
同样根据 Railscast 的建议,我安装了 taps gem,并执行了以下几行:
taps server sqlite://db.development.sqlite3 <username> <password>
然后打开一个新选项卡并执行:
taps pull postgresql://<username>@localhost/<appname>_development http://localhost//5000
但是当我输入时,我收到以下错误:
Failed to connect to database:
Sequel::AdapterNotFound -> LoadError: cannot load such file -- sequel/adapters/postgresql
当然我做错了。(例如,我应该从 sqlite3 数据库中提取吗?我怎么知道它的 url?)。但我不知道如何开始故障排除,所以我想我会寻求帮助。
谢谢!