2011-09-10 16 views
16

Estoy siguiendo las instrucciones en rails tutorial y me quedé atascado al intentar usar el comando de andamio.rails sqlite adapter error

Cuando se ejecuta:

rails generate scaffold User name:string email:string 

me sale el error:

C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:71:in `rescue in establish_connection': Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (can't activate sqlite3 (~> 1.3.4), already activated sqlite3-1.3.3-x86-mingw32. Make sure all dependencies are added to Gemfile.) (RuntimeError) 

de reproducción:

gem install activerecord-sqlite3-adapter 

Tengo el error:

ERROR: Could not find a valid gem 'activerecord-sqlite3-adapter' (>= 0) in any repository 
ERROR: Possible alternatives: activerecord-jdbcsqlite3-adapter, activerecord-sqlserver-adapter, activerecord-nulldb-adapter, activerecord-spatialite-adapter, activerecord-simpledb-adapter 

Mi Gemfile se ve así:

source 'http://rubygems.org' 
gem 'rails', '3.1.0' 
gem 'sqlite3', '1.3.3' 
... 

estoy corriendo en Windows 7 OS x64.

¿Alguna idea?

Respuesta

18

Ok, he encontrado el problema. Noté que mi instalación de rieles tiene tanto SQLite 1.3.3 y 1.3.4 cambié Gemfile de:

gem 'sqlite3', '1.3.3' 

a:

gem 'sqlite3', '1.3.4' 

que solucionó el problema. Gracias @holger-just por señalarme la línea relevante en el mensaje de error en their answer.

+1

Agregué el mío exactamente así: gem 'sqlite3'. Y eso resolvió el mismo problema para mí :-) – MarlonRibunal

3

La parte importante de su mensaje de error es este fragmento:

can't activate sqlite3 (~> 1.3.4), already activated sqlite3-1.3.3-x86-mingw32. Make sure all dependencies are added to Gemfile. 

Para corregir esto, siempre se debe ejecutar sus órdenes a través de bundle exec al igual que

bundle exec rails generate scaffold User name:string email:string 

esta manera, se da bundler a tome el control total de su $LOAD_PATH que probablemente resolverá estos problemas.

+0

Gracias @Holager no resolvió el problema pero me indicó la línea correspondiente en el mensaje de error. Esto me ayudó a resolver el problema. –

2

tuve este error también, comprar mi problema era ligeramente diferente. el problema es que sqlite3-ruby está en desuso, para ser reemplazado por sqlite3. en el webcast de michael hartl, él todavía usaba el viejo sqlite3-ruby.

He editado mi gemfile para usar sqlite 1.3.4 en lugar de sqlite3-ruby 1.3.1. re-run bundle install, y listo, ¡problema resuelto!

2

En lugar de

gem install activerecord-sqlite3-adapter 

plazo

gem install sqlite3 
2

también en los carriles Tutorial, corrieron:

$ rake db:migrate 

consiguió el siguiente error:

Please install the sqlite3 adapter: gem install activerecord-sqlite3-adapter (sqlite3 is not part of the bundle. Add it to Gemfile.).

Ran:

$ gem install activerecord-sqlite3-adapter

Got:

ERROR: Could not find a valid gem 'activerecord-sqlite3-adapter' (>= 0) in any repository

Cambiado Gemfile según una de las respuestas anteriores:

gem 'sqlite3', '1.3.4'

consiguió otro error así que tuvimos que instalar:

$ gem install sqlite3 -v '1.3.4' 

intentado correr db $ rake: migrar de nuevo, pero tiene otro error, esta vez se asemeja a la respuesta anterior:

Please install the sqlite3 adapter: gem install activerecord-sqlite3-adapter (can't activate sqlite3 (~> 1.3.5), already activated sqlite3-1.3.4. Make sure all dependencies are added to Gemfile.)

tan cambiado Gemfile a:

gem 'sqlite3', '1.3.5'

Y tiene otro mensaje de error para asegurarse 'gem install sqlite3 -v' 1.3.5 'tiene éxito (¿qué pasa ?! bien de nuevo). Lo instalé exitosamente, ejecuté la instalación del paquete.

correr intentado:

$ rake db:migrate 

No pasó nada, así que probé:

$ bundle exec rails generate scaffold User name:string email:string 

Por otra sugerencia anterior. Y finalmente funcionó. El tutorial advirtió sobre un proceso de instalación laborioso, pero sentí que tenía que mezclar y combinar al menos otras 5 personas. Espero que esto ayude a la próxima persona.