在Mac OS X上使用Ruby on Rails安装PostgreSQL

Ken*_*ogt 9 postgresql ruby-on-rails-3

我安装了一切.但是当我运行"rake db:create"时,我得到以下内容:

Ken-Vogts-MacBook:sixmonths ken$ rake db:create
(in /Users/ken/sixmonths)
rake aborted!
no such file to load -- pg
Run Code Online (Sandbox Code Playgroud)

这是我的database.yml:

development:
  adapter: postgresql
  encoding: unicode
  database: sixmonths_development
  pool: 5
  username: postgres
  password: xxxxxxxx

test:
    adapter: postgresql
    encoding: unicode
    database: sixmonths_test
    pool: 5
    username: sixmonths
    password: xxxxxxxx

production:
    adapter: postgresql
    encoding: unicode
    database: sixmonths_production
    pool: 5
    username: sixmonths
    password: xxxxxxxx
Run Code Online (Sandbox Code Playgroud)

我可以在运行时看到pg已安装:gem list

我尝试在stackoverflow上的另一篇文章中用"pg"替换"postgresql",但结果如下:

Ken-Vogts-MacBook:sixmonths ken$ rake db:create
(in /Users/ken/sixmonths)
Run Code Online (Sandbox Code Playgroud)

看起来很酷,对吗?

不.接下来,我尝试"rake db:schema:dump",我得到了这个:

Ken-Vogts-MacBook:sixmonths ken$ rake db:schema:dump
(in /Users/ken/sixmonths)
rake aborted!
Please install the pg adapter: `gem install activerecord-pg-adapter` (no such file to load -- active_record/connection_adapters/pg_adapter)
Run Code Online (Sandbox Code Playgroud)

当然没有"activerecord-pg-adapter".我需要做些什么来完成这项工作?

Gemfile内容:

source 'rubygems.org'
gem 'rails', '3.0.0' 
# Bundle edge Rails instead: 
# gem 'rails', :git => 'git://github.com/rails/rails.git' 
gem 'sqlite3-ruby', :require => 'sqlite3' 
# gem 'unicorn' 
# gem 'capistrano'
# gem 'ruby-debug'
# Bundle the extra gems: 
# gem 'bj' 
# gem 'nokogiri' 
# gem 'sqlite3-ruby', :require => 'sqlite3' 
# gem 'aws-s3', :require => 'aws/s3' 
# Bundle gems for the local environment. Make sure to 
# put test-only gems in this group so their generators 
# and rake tasks are available in development mode: 
# group :development, :test do 
  # gem 'webrat' 
# end
Run Code Online (Sandbox Code Playgroud)

Dyl*_*kow 12

Rails 3只允许您访问您指定的宝石Gemfile,因此,即使您通过执行a gem install pg将其安装在系统范围的宝石中,它也无法找到它.

添加gem 'pg'到你的Gemfile,运行bundle install,你应该很高兴去.

  • 是的,即使gem是`pg`,你仍然在`database.yml`中使用`postgresql` (5认同)