【发布时间】:2012-09-10 01:21:15
【问题描述】:
我正在尝试将开发(和测试/生产)数据库切换到 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?)。但我不知道如何开始故障排除,所以我想我会寻求帮助。
谢谢!
【问题讨论】:
-
仅供参考,虽然最佳做法是切换以使您的环境匹配,但您不必切换到部署到 heroku。您可以使用组有条件地在 gemfile 中加载内容。
-
您是否安装了“pg”gem?
-
是的。我做到了。不过,我想我可能用错了水龙头。文档建议使用这样的拉线,我不知道 httpuser 和 httppassword 是什么意思: taps pull postgres://dbuser:dbpassword@localhost/dbname httpuser:httppassword@example.com:5000
标签: ruby-on-rails postgresql heroku sqlite