5

Macにpostgresをインストールし、Railsで初めて試しました。gem "pg"を含め、sqlite3 gemを削除しました(結局、前者を使用する場合、なぜ後者が必要になるのでしょうか)。ただし、サーバーを起動しようとすると、このエラーメッセージが表示されます

.rvm/gems/ruby-1.9.3-rc1@rails321/gems/bundler-1.0.22/lib/bundler/rubygems_integration.rb:143:in `block in replace_gem': Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (sqlite3 is not part of the bundle. Add it to Gemfile.) (LoadError)

そこで、sqlite3 gemを再度含めたところ、サーバーは正常に動作しましたが、テストアプリがsqlite3とpgのどちらを使用しているかは実際にはわかりません。

a)pg gemの使用を計画している場合、sqlite3 gemをインストールする必要がありますか?b)2つのうち1つだけをインストールすることになっている場合、テストアプリが現在使用しているものを確認する方法はありますか(両方ともGemfileにあるため)

Gemfile

source 'https://rubygems.org'

gem 'rails', '3.2.1'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'
gem 'devise'
gem 'sqlite3'


# 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'

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# To use Jbuilder templates for JSON
# gem 'jbuilder'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
4

3 に答える 3

10

これが私のdatabase.ymlで、pg gemを使用していたとき、アダプターは実際にはpostgresqlと呼ばれ、設定には他にもいくつかの違いがあります。以下のコードをコピーして貼り付け、データベース名を変更すると、かなりきれいになるはずです。準備ができています(私はherokuを使用しましたが、これはそこで機能しました):

development:
  adapter: postgresql
  encoding: utf8
  reconnect: false
  database: DATABASE_DEVELOPMENT
  pool: 5
  username: USER_NAME
  password:
  host: localhost

test:
  adapter: postgresql
  encoding: utf8
  reconnect: false
  database: DATABASE_TEST
  pool: 5
  username: USER_NAME
  password:
  host: localhost

production:
  adapter: postgresql
  encoding: utf8
  reconnect: false
  database: DATABASE_PRODUCTION
  pool: 5
  username: root
  password:
于 2012-02-29T03:10:28.657 に答える
3

現在、Gemfileに従って、同じ環境に2つのデータベースをインストールしています。

1つのGemfileの異なる環境でsqliteとpgを使用した場合があります。

使用したい場合

gem 'sqlite3'

group :production do
  gem 'pg', '0.12.2'
end

だから今私は開発モードでsqlite3を使用しており、本番環境ではpgを使用しているので、database.ymlで、最初に開発モードと本番モードの2つの接続を配置する必要があります

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 5
  timeout: 5000

production:
  adapter: pg (please correct the adapter)
  database: 
  user:
  password:

さらにサポートが必要な場合はお知らせください

于 2012-02-29T02:56:02.983 に答える
1

A)pg gemの使用を計画している場合、sqlite3 gemをインストールする必要がありますか?

いいえ、sqliteにはsqlite gemが必要であり、postgresにはpggemが必要です。

B)2つのうち1つだけをインストールすることになっている場合、テストアプリが現在使用しているものを確認する方法はありますか(両方ともGemfileにあるため)

はい。次rails dbのように入力し、出力を確認します。 postgresで得られるものは次のとおりです。

$rails db
psql (9.1.2)
Type "help" for help.

C)修辞的に尋ねられた:「なぜ私は両方が必要なのですか?」

実際には、両方が必要になるシナリオがいくつかあります。たとえば、あるデータベースの既存のデータを別のデータベースに変換したり、アプリケーションを一方から他方に変換したりします。ただし、通常はどちらか一方です。

于 2012-02-29T03:17:28.513 に答える