3

次のコマンドを入力しています。

rake -RAILS_ENV=production db:schema:load

実稼働サーバーの Rails アプリのホーム ディレクトリで、次のエラー メッセージが表示されます。

rake aborted!
Please install the postgresql adapter: `gem install activerecord-postgresql-adapter` (pg is not part of the bundle. Add it to Gemfile.)

pg が 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'

そして、bundle installそのディレクトリから実行すると、次の出力が得られます (pg はありません)。

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

そして、関連する場合は私のGemfile.lock(pgは依存関係のみとしてリストされています):

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

.bundle/config の内容:

BUNDLE_FROZEN: '1'
BUNDLE_PATH: /usr/local/lib/
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_WITHOUT: development:test

私が使用している - レール 3.2.8 - ルビー 1.9.3 - rvm 1.16.5

bundle install で Gemfile にリストされているすべての gem がインストールされない理由を説明できる人はいますか?

4

3 に答える 3

3

いくつかの調査作業を通じて、次の要因が問題の原因であることがわかりました。

1) Windows 固有のバージョンの gem pg: (0.14.0-x86-mingw32) をインストールした Windows マシンで開発していました。

2)これはその後、私のGemfile.lockに追加され、その結果、カピストラーノがDebianボックスにアプリをインストールするために使用した私のリポジトリに追加されました。pg は依存関係としてのみリストされていました。

3) capistrano は「--deployment」フラグを使用してバンドラーを実行していたため、Gemfile.lock が最新かつ正確である必要があります。

問題を解決した方法は、「--deployment」フラグを capistrano から削除し、deploy.rb に次の変数定義を追加しました。

set :bundle_flags, "--quiet"

require 'bundler/capistrano'

そしてcap deploy:updateもう一度走った。

Gemfile.lock に pg を本番環境にインストールする必要があることを反映させる方法にまだ取り組んでいますが、pg は開発マシンにインストールする必要があるため、展開タスクに --deployment オプションを戻すことができます。

于 2012-09-29T02:40:35.397 に答える
1

rake を実行するには、bundler を使用する必要があります。

bundle exec rake db:schema:load RAILS_ENV=production
于 2012-09-28T08:19:19.483 に答える
1

database.yml の場合

そのはず

development:
    adapter: postgresql
    encoding: utf8
    database: xxx
    host: localhost
    username: username
    password: pw

postgresql のアダプターは postgresql です

そしてgemファイルについては、pgがそこにあることを確認し、開発と本番の両方に存在する場合、ブロックは必要ありません

于 2012-09-28T08:56:25.573 に答える