2012-02-29 12 views
5

Instalé postgres en mi Mac y lo probé por primera vez con Rails. Incluí la gema "pg" y eliminé la gema sqlite3 (después de todo, ¿por qué necesitarías esta última si usas la anterior?). Sin embargo, cuando traté de iniciar el servidor Tengo este mensaje de errorRieles: Sqlite con PG gem

.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) 

Así que incluía la gema sqlite3 de nuevo y ahora el servidor funciona bien, pero en realidad no tengo ni idea de si mi aplicación de prueba es el uso sqlite3 o pg?

a) ¿Se supone que tengo la gema sqlite3 instalada si planeo usar la gema pg? b) Si sólo estoy supone que tiene uno de los dos instalado, ¿hay una manera de saber cuál es mi aplicación de prueba está utilizando actualmente (ya que ambos se encuentran en la 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

¿Puedo pegar tu Gemfile aquí? ¿Qué versión de Rails estás usando? –

+0

@Amit, rails 3.2.1, publicado gemfile en OP – Leahcim

+1

Parece que intenta cargar sqlite, sí, el Gemfile sería útil, también el database.yml está configurado para usar pg? –

Respuesta

10

Aquí fue mi database.yml cuando estaba trabajando con la gema pg, el adaptador se llama en realidad PostgreSQL y hay un par de otras diferencias entre los ajustes, si simplemente copia y pega el código de abajo y cambiar los nombres de bases de datos debe ser más o menos listo (utilicé heroku, esto funcionó allí):

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

¿cómo sé cuál es mi nombre de usuario para postgres? – Leahcim

+0

eso se hace en el servidor postgres en su máquina localhost, una vez que haya instalado y ejecutado el servidor postgres, debe crear un usuario y una identificación de la base de datos aquí http://www.jonathandean.com/2011/08/postgresql -8-4-on-mac-os-x-10-7-lion/si está ejecutando mac –

+0

gracias, lamentablemente esperaba que fuera tan simple como sqlite3, donde todo está hecho para usted. Sin embargo, probé CREATE USER y me dijeron que no se encontró el comando. Hice otra pregunta si quieres ganar más puntos SO. Gracias de antemano :) http://stackoverflow.com/questions/9493257/postgres-creating-a-username – Leahcim

3

Actualmente va a instalar dos bases de datos en el mismo entorno - como por Gemfile

puede suceder que utilizó sqlite y PG en diferentes ambientes en un solo Gemfile.

si desea utilizar

gem 'sqlite3' 

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

Así que ahora estoy usando sqlite3 en el modo de desarrollo y en la producción de PG estoy usando, por lo que en su database.yml es necesario colocar dos de conexión, primero para el modo de desarrollo y el modo de producción

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

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

Déjeme saber si usted necesita más ayuda

1

A) ¿Se supone que tengo instalada la gema sqlite3 si planeo usar la gema pg?

No, ya que se sospecha que necesita la gema SQLite para SQLite y la gema pg para postgres

B) Si sólo tengo que tener uno de los dos instalado, hay una manera de para saber cuál es mi aplicación de prueba actualmente (ya que ambos están en el Gemfile)

Sí. Escriba: rails db y mire la salida. Esto es lo que se obtendría para postgres:

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

C) preguntó retóricamente: "¿Por qué necesitaría tanto"

En realidad hay varios escenarios en los que se necesitan tanto , que incluyen, algunos datos existentes en una db otros de otra, la conversión de una aplicación de una a la otra, etc.Sin embargo, es cierto que generalmente es uno o el otro.