如何将PostgreSQL设置为Rails项目的数据库

时间:2017-03-06 16:31:48

标签: ruby-on-rails ruby postgresql

我的教授说在我们的项目中使用PostgreSQL而不是SQLite是明智的,这样可以更容易地部署到Heroku,但似乎我没有正确设置database.yml。

这是我在安装Pg gem后尝试做的事情。默认的database.yml内容是:

# SQLite version 3.x
#   gem install sqlite3
#
#   Ensure the SQLite 3 gem is defined in your Gemfile
#   gem 'sqlite3'
#
default: &default
  adapter: sqlite3
  pool: 5
  timeout: 5000

development:
  <<: *default
  database: db/development.sqlite3

# 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:
  <<: *default
  database: db/test.sqlite3

production:
  <<: *default
  database: db/production.sqlite3

我决定将默认适配器“sqlite3”更改为“postgresql”,因此:

   default: &default
   adapter: postgresql
   pool: 5
   timeout: 5000

但是当我使用脚手架时,我得到错误:

Specified 'postgresql' for database adapter but the gem is not loaded. Add 'gem pg' to your Gemfile and ensure its version is at the minimum required by active record

所以我猜我需要在gemfile中放一些像gem 'postgresql'这样的东西。但问题是我不知道我现在拥有的PostgreSQL的当前版本,所以我可以把它放在那条线上。

我如何知道PostgreSQL的当前版本?这会解决我的项目的PostgreSQL设置吗?

2 个答案:

答案 0 :(得分:1)

要在Ruby on Rails中使用Postgres,您应该按照以下步骤操作:

  • 将pg gem添加到位于应用程序根目录中的 Gemfile
  • 运行bundle install,它将安装gem并在 Gemfile.lock
  • 中设置其版本和依赖项
  • 在计算机中安装和配置postgres
  • 通过更改

    config/database.yml中配置连接uri
    database: db/development.sqlite3
    

    类似

    database: "postgres://username:password@hostname:port/database_name"
    

答案 1 :(得分:0)

在您的Gemfile中,只需将pg gem添加到您的生产组

group :production do gem 'pg', '~> 0.19.0' end

然后运行bundle