我目前有一个 Rails 项目,我将其部署到使用 postgres 数据库的生产服务器上。我在 Windows 中开发我的 rails 项目,这意味着如果我想在本地进行测试,我必须将我的 database.yml 文件中的所有数据库从 postgres 更改为 sqlite3(因为设置 Windows 以运行 postgres 服务器似乎是痛苦)。
我想做的是将我的 database.yml 格式化如下:
development:
adapter: postgresql
encoding: utf8
database: <%= begin IO.read("/home/www-data/.db/.dev_name") rescue "" end %>
pool: 5
username: <%= begin IO.read("/home/www-data/.db/.user") rescue "" end %>
password: <%= begin IO.read("/home/www-data/.db/.pass") rescue "" end %>
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: postgresql
encoding: utf8
database: <%= begin IO.read("/home/www-data/.db/.prod_name") rescue "" end %>
pool: 5
username: <%= begin IO.read("/home/www-data/.db/.user") rescue "" end %>
password: <%= begin IO.read("/home/www-data/.db/.pass") rescue "" end %>
这样我可以在rails s -e test
本地运行并使用 sqlite3 数据库进行测试,但是当我部署到我的开发和生产服务器时,我可以使用 postgres。
我遇到的问题是,通过上面显示的对我的 database.yml 的更改,当我在rails s -e test
本地运行时,我收到一条错误消息,说 rails 找不到 pg gem,这似乎暗示它仍在尝试使用开发或生产服务器。