2012-05-04 2 views
23

Я следую за this tutorial, но это терпит неудачу, когда я пытаюсь нажать на Heroku. Кажется, «sqlite3.h» отсутствует. Я новичок в разработке, поэтому я не уверен, какая информация поможет людям диагностировать проблему, вот и все :). Я работаю на Mac OS X 10.7 Lion. Вот версии всего я работаю с:«sqlite3.h» отсутствует при нажатии Rails-приложения на Heroku

Amits-MacBook-Air-2:demo_app amitgupta$ ruby -v 
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.3.0] 
Amits-MacBook-Air-2:demo_app amitgupta$ rails -v 
Rails 3.2.3 
Amits-MacBook-Air-2:demo_app amitgupta$ sqlite3 -version 
3.7.11 2012-03-20 11:35:50 00bb9c9ce4f465e6ac321ced2a9d0062dc364669 
Amits-MacBook-Air-2:demo_app amitgupta$ heroku -v 
2.25.0 
Amits-MacBook-Air-2:demo_app amitgupta$ port -v 
MacPorts 2.0.4 
Entering interactive mode... ("help" for help, "quit" to quit) 
[RailsApps/demo_app] > quit 
Goodbye 

Когда я пытаюсь нажать на Heroku:

Amits-MacBook-Air-2:demo_app amitgupta$ heroku create --stack cedar 
Creating floating-stream-8009... done, stack is cedar 
http://floating-stream-8009.herokuapp.com/ | [email protected]:floating-stream-8009.git 
Amits-MacBook-Air-2:demo_app amitgupta$ git push heroku master 

Вот что я получаю:

Counting objects: 119, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (104/104), done. 
Writing objects: 100% (119/119), 33.74 KiB, done. 
Total 119 (delta 17), reused 0 (delta 0) 

-----> Heroku receiving push 
-----> Ruby/Rails app detected 
-----> Installing dependencies using Bundler version 1.1.2 
     Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment 
     Fetching gem metadata from https://rubygems.org/....... 
     Installing rake (0.9.2.2) 
     . 
     . 
     . 
     Installing sqlite3 (1.3.6) 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: 
     --with-opt-dir 
     . 
     . 
     . 
     --disable-local 
     Gem files will remain installed in /tmp/build_2l2dn7bx7lu34/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.6 for inspection. 
     Results logged to /tmp/build_2l2dn7bx7lu34/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.6/ext/sqlite3/gem_make.out 
     An error occured while installing sqlite3 (1.3.6), and Bundler cannot continue. 
     Make sure that `gem install sqlite3 -v '1.3.6'` succeeds before bundling. 
! 
!  Failed to install gems via Bundler. 
! 
!  Heroku push rejected, failed to compile Ruby/rails app 

To [email protected]:blazing-mountain-3659.git 
! [remote rejected] master -> master (pre-receive hook declined) 
error: failed to push some refs to '[email protected]:blazing-mountain-3659.git' 

Когда я делаю:

Amits-MacBook-Air-2:demo_app amitgupta$ sudo port install sqlite3 +universal 

Я получаю:

Password: 
---> Computing dependencies for sqlite3 
---> Cleaning sqlite3 

Далее я попробовал:

Amits-MacBook-Air-2:demo_app amitgupta$ sudo gem install sqlite3 -v '1.3.6' 

и получите:

Building native extensions. This could take a while... 
Successfully installed sqlite3-1.3.6 
1 gem installed 
Installing ri documentation for sqlite3-1.3.6... 
Installing RDoc documentation for sqlite3-1.3.6... 

Тогда:

Amits-MacBook-Air-2:demo_app amitgupta$ bundle install 

дает:

Using rake (0.9.2.2) 
. 
. 
. 
Using sqlite3 (1.3.6) 
Using uglifier (1.2.4) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. 

Затем я пытаюсь снова нажать на Heroku, но получаю ту же проблему. Возможно, это как-то связано с расхождением между первой командой «Создание плавающего потока-8009», а вторая команда «не нажала некоторые ссылки на« [email protected]: blazing-mountain-3659.git »?

ответ

25

Heroku использует postgresql, поэтому вы хотите удалить sqlite3 или переместить его в группу разработки в своем Gemfile.

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

+0

Спасибо, сейчас работает! –

+1

Как только вы удалите sqlite3 из gemfile и сохраните файл gem, и проверьте gemfile.lock и подтвердите, что на него нет других ссылок - THEN - каковы следующие шаги? Я все еще нажимаю на Heroku и получаю ту же ошибку - но я чувствую, что теперь он не должен искать sqlite3. – stopshinal

+3

@stopshinal не забудьте зафиксировать изменения в файле gem снова локально, прежде чем снова нажать его в heroku. –

4

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

, что решить это для меня было коммита команду

git commit -am 

, что я нашел на this tutorial

53
gem 'sqlite3', :group => [:development, :test] 
group :production do 
    gem 'pg' 
end 
  1. редактировать Gemfile как описано выше
  2. удалить Gemfile.lock
  3. запустить bundle install --without production
  4. git add .
  5. git commit -am "bundle updating sqlite3"
  6. git push heroku master
+4

Thanx! Это решение для меня. – Martin

+3

Сделал трюк спасибо – Aspen

+3

Спасибо. Он исправил мою проблему, хотя она не была выбрана ОП. – newguy

1

Что случилось со мной, я следовал вдоль урока Heroku и когда я использовал git push heroku master он толкал из мой последний Git совершает (очевидно!)

Я забыл, что в глазах Git я все еще использовал sqlite в gemfile! Дурак я!

Поэтому я использовал git add ., а затем git commit -m "Changed to Postgres.", так что Гит знал об этих изменениях. Нажатие после этого отлично работало для меня.

Смежные вопросы