问题
I've got a problem deploying a very simple example rails app on Heroku. This app uses a db.
In local (OSX) with sqlite3 there is no problem, but I can't push to Heroku because some lost reference to sqlite3.
I've put on Gemfile the distinction between test, development and production environments:
#gem 'sqlite3'
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
and bundle withou problem:
bundle install --without production
But when i deploy to Heroku:
git push heroku master
I've got some reference to sqlite3 and get an error.
I've tryed with postgresql installed on my OSX, and bundle with only "gem 'pg'" on Gemfile, but i've got also the reference to sqlite3
What should I do? I need some extra config on Heroku to use a postgre db?
This is the common error I obtain when git push to heroku master:
git push heroku master
Counting objects: 87, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (76/76), done.
Writing objects: 100% (87/87), 30.32 KiB, done.
Total 87 (delta 2), reused 0 (delta 0)
-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.2.1
Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
Fetching gem metadata from https://rubygems.org/.........
Fetching gem metadata from https://rubygems.org/..
Installing rake (0.9.2.2)
Installing i18n (0.6.1)
Installing multi_json (1.3.7)
Installing activesupport (3.2.8)
Installing builder (3.0.4)
Installing activemodel (3.2.8)
Installing erubis (2.7.0)
Installing journey (1.0.4)
Installing rack (1.4.1)
Installing rack-cache (1.2)
Installing rack-test (0.6.2)
Installing hike (1.2.1)
Installing tilt (1.3.3)
Installing sprockets (2.1.3)
Installing actionpack (3.2.8)
Installing mime-types (1.19)
Installing polyglot (0.3.3)
Installing treetop (1.4.12)
Installing mail (2.4.4)
Installing actionmailer (3.2.8)
Installing arel (3.0.2)
Installing tzinfo (0.3.35)
Installing activerecord (3.2.8)
Installing activeresource (3.2.8)
Installing coffee-script-source (1.4.0)
Installing execjs (1.4.0)
Installing coffee-script (2.2.0)
Installing rack-ssl (1.3.2)
Installing json (1.7.5) with native extensions
Installing rdoc (3.12)
Installing thor (0.16.0)
Installing railties (3.2.8)
Installing coffee-rails (3.2.2)
Installing jquery-rails (2.1.3)
Using bundler (1.2.1)
Installing rails (3.2.8)
Installing sass (3.2.2)
Installing sass-rails (3.2.5)
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
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/bin/ruby
--with-sqlite3-dir
--without-sqlite3-dir
--with-sqlite3-include
--without-sqlite3-include=${sqlite3-dir}/include
--with-sqlite3-lib
--without-sqlite3-lib=${sqlite3-dir}/lib
--enable-local
--disable-local
Gem files will remain installed in /tmp/build_28i7zx40b8bao/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.6 for inspection.
Results logged to /tmp/build_28i7zx40b8bao/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.6/ext/sqlite3/gem_make.out
An error occurred 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.
!
! 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
To git@heroku.com:pure-reaches-4621.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:pure-reaches-4621.git'
回答1:
I've resolved the problem. It was a bad use of git.
I needed to update the changes in Gemfile and Gemfile.lock:
First compile:
$ bundle
then:
$ git add Gemfile
$ git add Gemfile.lock
$ git commit -m 'Added pg adapter gem'
$ git push heroku master
Now Heroku updates OK
And now run the postgresql database:
$ heroku run rake db:migrate
Bye!
来源:https://stackoverflow.com/questions/13323887/sqlite3-reference-deploying-simple-heroku-rails-application