Развертывание Heroku не удалось из-за ошибки gem sqlite3

Я только что начал книгу Майкла Хартла ruby.railstutorial.org и прорабатывал первую главу. Я использую MacBook OS X, Терминал и Sublime Text. Все шло по плану, пока не пришло время тестировать развертывание на Heroku. Я могу подключиться к Heroku и запустить$ git push heroku мастер команда. Но развертывание не удается:

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

Вот мой 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'

У меня есть sqlite3, предназначенный для разработки, а не для производства, поэтому я подумал, что Heroku просто проигнорирует все это вместе, но, похоже, это не так.

Кроме того, когда я создаю пакет, я использую $ bundle install --without production

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

Я немного растерялся на данный момент, и не знаю, как действовать дальше. Любая помощь, которую вы можете оказать, будет очень цениться.

Спасибо

 Chowlett26 окт. 2012 г., 10:32
Ничего себе, эта ссылка помощинамного бесполезнее, чем когда я сталкиваюсь с этой проблемой ...
 sevenseacat26 окт. 2012 г., 10:44
Перейди по ссылке'Совет и вместо этого используйте PostgreSQL.
 xuamox26 окт. 2012 г., 19:55
Хорошо, я взглянул на статью и наконец смог завершить развертывание в Heroku. Я вижу, что я сделал не так. Я не зафиксировал свои изменения перед развертыванием обновленных файлов в Heroku. Ошибка новичка!
 fankt26 окт. 2012 г., 10:48
Проверьте этот разделdevcenter.heroku.com/articles/...

Ответы на вопрос(5)

39;Есть несколько причин для этого - этов основном из-за того, что вы можете масштабировать свое приложениепроизводительность за счет добавления новых экземпляров (т. е. запуска нескольких серверов одновременно), и эти экземпляры неt гарантированно будет на одном физическом компьютере - копирование файлов будет очень медленным.

SQLite просто хранит базу данных в файл в вашей папке db /, поэтомус несовместимым с Героку.

Наилучший вариант, как предлагается в справочной ссылке, это отойти от SQLite, потому что иногда между SQLite и PostgreSQL есть тонкая несовместимость (Heroku 'базу данных выбора), и вы хотите узнать этодо вы развертываете в производство!

После установки PostgreSQL (как это сделать зависит от вашей ОС), а затем добавьтеgem 'pg' в ваш Gemfile.

по любой причине. Но вы можете сказать,bundler что это не должноне пытаться, кроме как при разработке.

В вашемGemfileзаменитьgem 'sqlite3' с:

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

Потом упаковываю на героку, бегаю какproduction, победил'не пытайтесь установить его.

 xuamox26 окт. 2012 г., 10:42
Я обновил Gemfile с помощью кода, связал и развернул в Heroku, но все еще получаю ту же ошибку.
 xuamox26 окт. 2012 г., 10:54
Установка gem sqlite3 прошла успешно, как и комплектация без производства, и до сих пор не повезло
 Chowlett26 окт. 2012 г., 11:38
Глупый я, я забыл добавитьpg драгоценный камень в качестве замены. Как насчет сейчас?
 xuamox26 окт. 2012 г., 19:39
Я только добавил свой Gemgfile к моему вопросу. Я отмечаю sqlite как разработку и PG как производство - но я все еще получаю ту же ошибку при попытке развернуть на Heroku.

азание на статью на сайте Heroku. Похоже, я просто забыл зафиксировать свои обновления Gemgile перед развертыванием на Heroku. Поэтому для всех, кто только начинает, вам необходимо убедиться, что вы внесете изменения, прежде чем внедрять их в Heroku.

Удалите sqlite3 из вашего Gemfile, используйте вместо этого pg gem. Выполните следующие изменения в файле gem

поменяйте подписку в вашемGemfile

gem 'sqlite3'

в

gem 'pg' #you will have to install postgresql

Важно: запустить

git add .
git commit 
git push heroku master

Примечание: если вы планируете развертывание для heroku, я предлагаю лучше использовать postgres также на этапе разработки (установите postgresql на свой компьютер), heroku предпочитает psql.

Если вы хотите использовать sqllite для разработки и postgresql для Heroku, используйте следующий конфиг.

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 будет использоватьpg жемчужина с тех пор как героку запустил ваше приложение в производственной среде

если вы неу вас есть sqlite3 прямо в вашем gemfile, и вы 'все еще получаю эту ошибку.

Скорее всего, у вас есть гем, который использует sqlite3 в качестве зависимости, и это 'Включая драгоценный камень без вашего ведома.

1) Перейдите на Gemfile.lock и выполните поиск sqlite.

2) Найдите, какой драгоценный камень использует sqlite, затем переместите драгоценный камень в группу разработки или тестирования.

3) Связка

Ваш ответ на вопрос