Heroku déploiement a échoué en raison de gem sqlite3 erreur
Je viens de commencer le ruby.railstutorial.org livre de Michael Hartl et ont travaillé dans le premier chapitre. Je suis à l'aide de livre mac OS X, le Terminal, et de Sublime Text. Tout s'est déroulé comme prévu, jusqu'à ce qu'il était temps de tester le déploiement d'Heroku. Je suis en mesure de vous connecter à Heroku et exécuter le $ git push heroku
maître de commande. Mais le déploiement échoue:
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
Voici mon 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'
J'ai sqlite3 désigné pour le développement et non la production, alors j'ai pensé que Heroku serait tout simplement l'ignorer tous ensemble, mais cela ne semble pas être le cas.
Aussi, quand j'ai créer le bundle, je suis en utilisant
$ bundle install --sans production
Je sais que certaines personnes ont suggéré à juste installer le PG et de l'utiliser, mais j'ai vraiment envie de bâton pour le tutoriel, autant que possible, avant de me lancer et de tenter une approche différente.
Je suis un peu perdu en ce moment, et pas sûr de savoir comment procéder à partir d'ici. Toute aide que vous pouvez fournir serait grandement appréciée.
Grâce
Suivez le lien des conseils et de l'utilisation de PostgreSQL à la place.
De vérifier la section devcenter.heroku.com/articles/...
OK, j'ai pris un coup d'oeil à l'article, et j'ai finalement été en mesure d'achever le déploiement d'Heroku. Je vois ce que j'ai fait de mal. Je n'ai pas commis de mes modifications avant le déploiement de la mise à jour des fichiers d'Heroku. Erreur de débutant!
OriginalL'auteur xuamox | 2012-10-26
Vous devez vous connecter pour publier un commentaire.
Heroku ne pouvez pas installer la gem sqlite3, pour quelque raison que ce soit. Mais vous pouvez dire
bundler
qu'il ne devrait pas être en train d'essayer de faire exception pour le développement.Dans votre
Gemfile
, remplacergem 'sqlite3'
avec:Bundler sur heroku, de fonctionner comme
production
, ne pas essayer de l'installer.gem install de sqlite3 a été un succès, comme ce fut le bundle sans production, et toujours pas de chance
Je suis bête, j'ai oublié d'ajouter le
pg
gem comme un remplacement. Comment est-il maintenant?J'ai juste ajouté mon Gemgfile à ma question. Je suis de repérage sqlite comme le développement et le PG de la production - mais j'ai toujours le même message d'erreur lorsque vous tentez de déployer sur Heroku.
OriginalL'auteur Chowlett
J'ai finalement été en mesure de déployer avec succès à Heroku. Grâce à evanc3 pour m'indiquer un article sur le Heroku site. Il semble que j'ai tout simplement oublié de s'engager ma Gemgile mises à jour avant de les déployer sur Heroku. Donc pour vous tous juste de commencer, vous devez vous assurer que vous validez vos modifications avant de les déployer sur Heroku.
Voici un "Merci!" "Moi aussi!", commentaire, donc ce post utile obtient verrouillé!
OriginalL'auteur xuamox
Heroku ne prennent pas en charge sqlite3...
Supprimer sqlite3 à partir de votre Gemfile, utilisez pg gem à la place. Faire la suite du changement du gem fichier
changement suivant dans votre
Gemfile
à
Important: Exécutez
Remarque: Si vous envisagez de déployer pour heroku, je suggère qu'il est préférable d'utiliser postgres dans votre phase de développement aussi(installer postgresql sur votre ordinateur), heroku préfèrent psql.
Si vous souhaitez utiliser sqllite pour le développement et postgresql pour Heroku, à la suite de la config.
Heroku utilisera
pg
gem depuis heroku exécuter votre application en production de l'environnement deOriginalL'auteur Bibin Venugopal
Sur Heroku, votre application n'a pas accès au système de fichiers. Il y a un certain nombre de raisons pour cela -, c'est essentiellement en raison du fait que vous pouvez mettre à l'échelle les performances de votre application en ajoutant de nouvelles instances (c'est à dire l'exécution de plusieurs serveurs à la fois), et ces cas ne sont pas la garantie d'être sur la même machine physique - de la copie de fichiers sur l'ensemble est extrêmement lent.
SQLite juste stocke la base de données à un fichier dans votre db/dossier, qui est pourquoi il est incompatible avec Heroku.
La meilleure option, comme indiqué dans le lien d'aide, est de s'éloigner de SQLite, car il y a parfois des incompatibilités subtiles entre SQLite et PostgreSQL (Heroku de la base de données de choix) et vous souhaitez trouver avant vous déployez pour la production!
Après l'installation de PostgreSQL (exactement la façon de faire dépend de votre OS), puis ajouter
gem 'pg'
à votre Gemfile.OriginalL'auteur Andrew Haines
J'ai une solution pour vous si vous n'avez pas sqlite3 directement dans votre gemfile et vous êtes toujours cette erreur.
Vous avez probablement un bijou qui utilise sqlite3 comme une dépendance et c'est notamment le gem, sans le savoir.
1) Aller à Gemfile.verrouillage et faites une recherche pour sqlite.
2) Localiser gem utilise sqlite puis déplacez le joyau dans le développement ou le test de groupe.
3) Bundle
OriginalL'auteur Daniel Sun Yang