2012-02-29 2 views
5

Я установил postgres на своем Mac и впервые попробовал Rails. Я включил gem «pg» и удалил камень sqlite3 (в конце концов, зачем вам нужен последний, если использовать первый). Однако, когда я попытался запустить сервер я получил сообщение об ошибкеРельсы: Sqlite с драгоценным камнем PG

.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) Должен ли я иметь монстр sqlite3, если я планирую использовать жемчуг pg? б) Если я только должен иметь один из двух установленных, есть способ, чтобы выяснить, какой один мой тест приложение в настоящее время используется (так как оба они находятся в 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' 
+0

Могу ли я вставить свой Gemfile здесь? Какую версию Rails вы используете? –

+0

@Amit, rails 3.2.1, размещен gemfile в OP – Leahcim

+1

Похоже, что он пытается загрузить 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

Как узнать, как мое имя пользователя для postgres? – Leahcim

+0

Это делается на сервере postgres на вашей машине localhost, как только вы запустили сервер postgres и вы должны создать пользователя и идентификатор базы данных, посмотрите здесь 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

в настоящее время вы устанавливаете две базы данных в той же среде - по Gemfile

может случиться так, что вы использовали SQLite и пг в различных условиях в одном Gemfile.

, если вы хотите использовать

gem 'sqlite3' 

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

Так что теперь я использую sqlite3 в режиме разработки и производства я использую пг, так что в вашем database.yml вам необходимо разместить два соединения, первый в режиме разработки и режим производства

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

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

Позвольте мне знать, если вам нужна дополнительная помощь

1

A) Должен ли я иметь установленный sqlite3 gem, если я планирую использовать жемчуг pg?

Нет, как вы подозреваете, что вы нуждаетесь в SQLITE камень для SQLite и программатор камень для Postgres

B) Если я только предполагается иметь один из двух установленных, есть способ чтобы узнать, какой из них использует мое тестовое приложение (поскольку оба они находятся в Gemfile)

Да. Тип: rails db и посмотрите на выход. Вот что вы получите для Postgres:

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

C) На вопрос риторический: «Зачем мне нужны оба»

На самом деле существует несколько сценариев, в которых вам нужно будет как, которые включают в себя, некоторые существующие данные в одной БД некоторых в другой, преобразующие приложение от одного к другому и т.д.Правда, это обычно одно или другое.

Смежные вопросы