La implementación de Heroku falló debido al error sqlite3 gem

Acabo de comenzar el libro ruby.railstutorial.org de Michael Hartl y he estado trabajando en el primer capítulo. Estoy usando macbook OS X, Terminal y Sublime Text. Todo ha ido según lo planeado, hasta que llegó la hora de probar el despliegue en Heroku. Puedo conectarme con Heroku y ejecutar el comando maestro $ git push heroku . Pero la implementación falla:

 Installing sqlite3 (1.3.5) with native extensions Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. /usr/local/bin/ruby extconf.rb checking for sqlite3.h... no sqlite3.h is missing. Try 'port install sqlite3 +universal' or 'yum install sqlite-devel' and check your shared library search path (the location where your sqlite3 shared library is located). *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: An error occurred while installing sqlite3 (1.3.5), and Bundler cannot continue. Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling. ! ! Failed to install gems via Bundler. ! ! Detected sqlite3 gem which is not supported on Heroku. ! http://devcenter.heroku.com/articles/how-do-i-use-sqlite3-for-development ! ! Heroku push rejected, failed to compile Ruby/rails app 

Aquí está mi Gemfile

 source 'https://rubygems.org' gem 'rails', '3.2.8' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' group :development, :test do gem 'sqlite3', '1.3.5' end # Gems used only for assets and not required # in production environments by default. group :assets do gem 'sass-rails', '~> 3.2.5' gem 'coffee-rails', '~> 3.2.2' # See https://github.com/sstephenson/execjs#readme for more supported runtimes # gem 'therubyracer', :platforms => :ruby gem 'uglifier', '>= 1.2.3' end gem 'jquery-rails', '2.0.2' group :production do gem 'pg', '0.12.2' end # To use ActiveModel has_secure_password # gem 'bcrypt-ruby', '~> 3.0.0' # To use Jbuilder templates for JSON # gem 'jbuilder' # Use unicorn as the app server # gem 'unicorn' # Deploy with Capistrano # gem 'capistrano' # To use debugger # gem 'debugger' 

Tengo sqlite3 designado para desarrollo y no producción, así que pensé que Heroku simplemente ignoraría todo junto, pero ese no parece ser el caso.

Además, cuando creo el paquete, estoy usando $ bundle install, sin producción

Sé que algunas personas han sugerido simplemente instalar PG y usar eso, pero realmente quiero seguir con el tutorial tanto como sea posible, antes de aventurarme y probar un enfoque diferente.

Estoy un poco perdido en este momento, y no estoy seguro de cómo proceder desde aquí. Cualquier ayuda que pueda proporcionar sería muy apreciada.

Gracias

Heroku no puede instalar la gem sqlite3, por la razón que sea. Pero puedes decirle a bundler que no debería intentar exceptuarlo al desarrollarlo.

En tu Gemfile , reemplaza la gem 'sqlite3' por:

 group :development, :test do gem 'sqlite3' end group :production do gem 'pg' end 

Entonces, el paquete en heroku, ejecutándose como production , no intentará instalarlo.

Finalmente pude desplegar con éxito a Heroku. Gracias a evanc3 por señalarme un artículo en el sitio de Heroku. Parece que simplemente olvidé confirmar mis actualizaciones de Gemgile antes de implementarlo en Heroku. Entonces, para todos los que recién comiencen, deben asegurarse de confirmar sus cambios antes de implementarlo en Heroku.

Heroku no es compatible con sqlite3 …

Elimina sqlite3 de tu Gemfile, usa pg gem en su lugar. Hacer el siguiente cambio en el archivo gem

cambiar a continuación en su Gemfile

 gem 'sqlite3' 

a

 gem 'pg' #you will have to install postgresql 

Importante: ejecutar

 git add . git commit git push heroku master 

Nota: Si está planeando implementar heroku, le sugiero que también use postgres en su fase de desarrollo (instale postgresql en su computadora), heroku prefiera psql.

Si quiere usar sqllite para desarrollo y postgresql para Heroku, use la siguiente configuración.

 group :development do gem 'sqlite3' #gem to use in development environment end group :production do gem 'pg' #gem to use in production environment end 

Heroku usará la gem de pg ya que heroku ejecuta su aplicación en el entorno de producción

En Heroku, tu aplicación no tiene acceso al sistema de archivos. Hay una serie de razones para esto: básicamente se debe al hecho de que puede escalar el rendimiento de su aplicación agregando nuevas instancias (es decir, ejecutando múltiples servidores a la vez), y no se garantiza que estas instancias estén en la misma máquina física – copiando los archivos a través de ellos serían extremadamente lentos.

SQLite simplemente almacena la base de datos en un archivo en su carpeta db /, razón por la cual es incompatible con Heroku.

La mejor opción, como se sugiere en el enlace de ayuda, es alejarse de SQLite, porque a veces hay incompatibilidades sutiles entre SQLite y PostgreSQL (la base de datos de elección de Heroku) y usted quiere descubrir esto antes de implementarlo en producción.

Después de instalar PostgreSQL (exactamente cómo hacerlo depende de su sistema operativo) y luego añada gem 'pg' a su Gemfile.

Tengo una solución para si no tienes sqlite3 directamente en tu gemfile y sigues teniendo este error.

Lo más probable es que tengas una gem que use sqlite3 como dependencia e incluya la gem sin que lo sepas.

1) Ve a Gemfile.lock y haz una búsqueda de sqlite.

2) Ubique qué gem está usando sqlite y luego mueva la gem al grupo de desarrollo o prueba.

3) paquete

    Intereting Posts