2012-02-29 11 views
5

私はMacにpostgresをインストールし、初めてRailsで試しました。私はgem "pg"を組み込み、sqlite3 gemを削除しました(結局のところ、前者の場合は後者が必要でしょう)。私は、このエラーメッセージRails:PG宝石のSqlite

.rvm/gems/[email protected]/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の宝石を含め、現在のサーバーが正常に動作しますが、私のテストアプリケーションが使用している場合、私は実際に任意のアイデアを持っていませんsqlite3またはpg?

a)pg gemを使用する予定がある場合、sqlite3 gemがインストールされているはずですか? 私がのみインストールの二つのうちの一つを持つようになってる場合b)に、それらの両方がGemfileにあるので、私のテストのアプリが現在(使用している1を見つけるためにそこの方法です)

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' 
+0

Gemfileをここに貼り付けることはできますか?どのRailsバージョンを使用していますか? –

+0

@Amit、rails 3.2.1、OP – Leahcim

+1

にgemfileが投稿されましたsqliteを読み込もうとしているようですが、Gemfileが役に立ちます。また、database.ymlはpgを使用するように設定されていますか? –

答えて

10

は私のdatabase.ymlをした、アダプタが実際に呼び出される知ってみましょう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: 
+0

私のユーザ名がポストグルのためにどのように分かっていますか? – Leahcim

+0

あなたのlocalhostマシン上のpostgresサーバで行われたことですが、postgresサーバを起動して実行すると、ここでユーザとデータベースIDを作成する必要があります。http://www.jonathandean.com/2011/08/postgresql -8-4-on-mac-os-x-10-7-lion /もしあなたがMacを実行しているなら –

+0

ありがとう、悲しいことに、sqlite3と同じくらいシンプルだと思っていました。しかし、私はCREATE USERを試して、コマンドが見つかりませんでした。もう少しSO点を獲得したいと思ったら別の質問をしました。おかげで前もって:) http://stackoverflow.com/questions/9493257/postgres-creating-a-username – Leahcim

3

現在、あなたは同じ環境で2つのデータベースをインストールする - Gemfile

あたりのように、あなたが1 Gemfileに異なる環境でsqliteのとPGを使用することが起こり得ます。

あなたは今、私が開発モードでsqlite3のを使用していますし、あなたのdatabase.ymlの中で次の2つの接続を配置する必要があるので、生産に私が最初に開発モードのために、PGを使用していますので、

gem 'sqlite3' 

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

を使用したい場合生産モード

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

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

は、私はあなたがより多くの助けを必要とする場合、私はPG宝石で働いていたとき、ここで

1

A)pg gemを使用する予定がある場合、sqlite3 gemがインストールされているはずですか?

いいえ、あなたはsqliteのためのsqliteの宝石とpostgresの

BのためのPG宝石を必要とする疑いがあるとして)私が唯一のインストールの二つのうちの一つを持つようになってる場合は、方法があります私のテストアプリケーションが現在どのファイルを使っているのか調べる(両方ともGemfileにあるので)

はい。タイプ:rails dbと出力を見てください。 ここでは、postgresのためになるだろうものです:

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

C)は修辞尋ねた: "なぜ私は両方必要があるでしょう?"

実はなど、一方から他方へのアプリケーションを変換し、あなたには、両方、他の一部のデシベル1でいくつかの既存のデータを必要とするいくつかのシナリオがあり、しかし、それは通常、どちらか一方です。