Reputation: 1698
I am typing the following command:
rake -RAILS_ENV=production db:schema:load
In the home directory of my rails app on my production server and I get the following error message:
rake aborted!
Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (pg is not part of the bundle. Add it to Gemfile.)
This is strange because I know that pg is in my Gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.8'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
group :development, :production do
gem 'pg'
gem 'devise'
gem 'haml-rails'
gem 'paperclip'
gem 'will_paginate'
end
group :development do
gem 'capistrano'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
And when I run bundle install
from that directory I get the following output (pg is not on it.):
Fetching gem metadata from https://rubygems.org/.......
Using rake (0.9.2.2)
Using i18n (0.6.1)
Using multi_json (1.3.6)
Using activesupport (3.2.8)
Using builder (3.0.0)
Using activemodel (3.2.8)
Using erubis (2.7.0)
Using journey (1.0.4)
Using rack (1.4.1)
Using rack-cache (1.2)
Using rack-test (0.6.1)
Using hike (1.2.1)
Using tilt (1.3.3)
Using sprockets (2.1.3)
Using actionpack (3.2.8)
Using mime-types (1.19)
Using polyglot (0.3.3)
Using treetop (1.4.10)
Using mail (2.4.4)
Using actionmailer (3.2.8)
Using arel (3.0.2)
Using tzinfo (0.3.33)
Using activerecord (3.2.8)
Using activeresource (3.2.8)
Using cocaine (0.2.1)
Using coffee-script-source (1.3.3)
Using execjs (1.4.0)
Using coffee-script (2.2.0)
Using rack-ssl (1.3.2)
Using json (1.7.5)
Using rdoc (3.12)
Using thor (0.16.0)
Using railties (3.2.8)
Using coffee-rails (3.2.2)
Using orm_adapter (0.4.0)
Using warden (1.2.1)
Using devise (2.1.2)
Using haml (3.1.7)
Using haml-rails (0.3.4)
Using jquery-rails (2.1.1)
Using paperclip (3.1.2)
Using bundler (1.2.1)
Using rails (3.2.8)
Using sass (3.2.1)
Using sass-rails (3.2.5)
Using uglifier (1.2.7)
Using will_paginate (3.0.3)
Your bundle is complete! It was installed into /usr/local/lib
And my Gemfile.lock if it's relevant (pg is listed as a dependency only):
GEM
remote: https://rubygems.org/
specs:
actionmailer (3.2.8)
actionpack (= 3.2.8)
mail (~> 2.4.4)
actionpack (3.2.8)
activemodel (= 3.2.8)
activesupport (= 3.2.8)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.4)
rack (~> 1.4.0)
rack-cache (~> 1.2)
rack-test (~> 0.6.1)
sprockets (~> 2.1.3)
activemodel (3.2.8)
activesupport (= 3.2.8)
builder (~> 3.0.0)
activerecord (3.2.8)
activemodel (= 3.2.8)
activesupport (= 3.2.8)
arel (~> 3.0.2)
tzinfo (~> 0.3.29)
activeresource (3.2.8)
activemodel (= 3.2.8)
activesupport (= 3.2.8)
activesupport (3.2.8)
i18n (~> 0.6)
multi_json (~> 1.0)
arel (3.0.2)
bcrypt-ruby (3.0.1-x86-mingw32)
builder (3.0.0)
capistrano (2.12.0)
highline
net-scp (>= 1.0.0)
net-sftp (>= 2.0.0)
net-ssh (>= 2.0.14)
net-ssh-gateway (>= 1.1.0)
cocaine (0.2.1)
coffee-rails (3.2.2)
coffee-script (>= 2.2.0)
railties (~> 3.2.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.3.3)
devise (2.1.2)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.1)
railties (~> 3.1)
warden (~> 1.2.1)
erubis (2.7.0)
execjs (1.4.0)
multi_json (~> 1.0)
haml (3.1.7)
haml-rails (0.3.4)
actionpack (~> 3.0)
activesupport (~> 3.0)
haml (~> 3.0)
railties (~> 3.0)
highline (1.6.13)
hike (1.2.1)
i18n (0.6.1)
journey (1.0.4)
jquery-rails (2.1.1)
railties (>= 3.1.0, < 5.0)
thor (~> 0.14)
json (1.7.5)
mail (2.4.4)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
mime-types (1.19)
multi_json (1.3.6)
net-scp (1.0.4)
net-ssh (>= 1.99.1)
net-sftp (2.0.5)
net-ssh (>= 2.0.9)
net-ssh (2.5.2)
net-ssh-gateway (1.1.0)
net-ssh (>= 1.99.1)
orm_adapter (0.4.0)
paperclip (3.1.2)
activemodel (>= 3.0.0)
activerecord (>= 3.0.0)
activesupport (>= 3.0.0)
cocaine (>= 0.0.2)
mime-types
pg (0.14.0-x86-mingw32)
polyglot (0.3.3)
rack (1.4.1)
rack-cache (1.2)
rack (>= 0.4)
rack-ssl (1.3.2)
rack
rack-test (0.6.1)
rack (>= 1.0)
rails (3.2.8)
actionmailer (= 3.2.8)
actionpack (= 3.2.8)
activerecord (= 3.2.8)
activeresource (= 3.2.8)
activesupport (= 3.2.8)
bundler (~> 1.0)
railties (= 3.2.8)
railties (3.2.8)
actionpack (= 3.2.8)
activesupport (= 3.2.8)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (>= 0.14.6, < 2.0)
rake (0.9.2.2)
rdoc (3.12)
json (~> 1.4)
sass (3.2.1)
sass-rails (3.2.5)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
sprockets (2.1.3)
hike (~> 1.2)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
thor (0.16.0)
tilt (1.3.3)
treetop (1.4.10)
polyglot
polyglot (>= 0.3.1)
tzinfo (0.3.33)
uglifier (1.2.7)
execjs (>= 0.3.0)
multi_json (~> 1.3)
warden (1.2.1)
rack (>= 1.0)
will_paginate (3.0.3)
PLATFORMS
x86-mingw32
DEPENDENCIES
capistrano
coffee-rails (~> 3.2.1)
devise
haml-rails
jquery-rails
paperclip
pg
rails (= 3.2.8)
sass-rails (~> 3.2.3)
uglifier (>= 1.0.3)
will_paginate
Contents of .bundle/config:
BUNDLE_FROZEN: '1'
BUNDLE_PATH: /usr/local/lib/
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_WITHOUT: development:test
I am using - rails 3.2.8 - ruby 1.9.3 - rvm 1.16.5
Can anyone offer an explanation as to why bundle install is not installing all the gems listed in my Gemfile?
Upvotes: 3
Views: 12917
Reputation: 1698
Through some detective work I found out the following factors contributed to my problem:
1) I was developing on a Windows machine that installed the windows-specific version of the gem pg: (0.14.0-x86-mingw32).
2) This was then added to my Gemfile.lock and consequently my repo that capistrano then used to install my app on a Debian box with; pg was listed as a dependency, only.
3) capistrano was running bundler with the "--deployment" flag, which requires your Gemfile.lock to be up-to-date and accurate.
How I resolved the problem was removed the "--deployment" flag from capistrano with the following variable definition in deploy.rb:
set :bundle_flags, "--quiet"
require 'bundler/capistrano'
And ran the cap deploy:update
again.
Still working on a way to have the Gemfile.lock reflect that pg should be installed on the production environment, while pg should be installed on the development machine so I can include the --deployment option back into the deployment task.
Upvotes: 3
Reputation: 168
For the database.yml
it should be
development:
adapter: postgresql
encoding: utf8
database: xxx
host: localhost
username: username
password: pw
the adapter for postgresql is postgresql
And for the gem file, make sure pg is there and you don't need a block if it exist in both development and production
Upvotes: 1
Reputation: 16435
You have to use bundler to execute rake:
bundle exec rake db:schema:load RAILS_ENV=production
Upvotes: 1