SQLite3参考部署简单的Heroku Rails应用程序 [英] Sqlite3 reference deploying simple heroku Rails application
问题描述
在Heroku上部署一个非常简单的示例Rails应用程序时遇到问题。此应用程序使用数据库。
I've got a problem deploying a very simple example rails app on Heroku. This app uses a db.
在带有sqlite3的本地(OSX)中没有问题,但由于某些对sqlite3的引用丢失,我无法推送到Heroku。
In local (OSX) with sqlite3 there is no problem, but I can't push to Heroku because some lost reference to sqlite3.
我在Gemfile上放置了测试,开发和生产环境之间的区别:
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
并捆绑有问题:
bundle install --without production
但是当我部署时到Heroku:
But when i deploy to Heroku:
git push heroku master
我对sqlite3有一些参考,但会出错。
I've got some reference to sqlite3 and get an error.
我尝试在OSX上安装postgresql,并且捆绑了Gemfile上的 gem'pg',但是我也引用了sqlite3
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
我该怎么办?我需要在Heroku上进行一些额外的配置才能使用Postgre db吗?
What should I do? I need some extra config on Heroku to use a postgre db?
这是我在git push到heroku master时遇到的常见错误:
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'
推荐答案
我已经解决了问题。这是对git的错误使用。
I've resolved the problem. It was a bad use of git.
我需要更新Gemfile和Gemfile.lock中的更改:
I needed to update the changes in Gemfile and Gemfile.lock:
第一次编译:
$ bundle
然后:
$ git add Gemfile
$ git add Gemfile.lock
$ git commit -m 'Added pg adapter gem'
$ git push heroku master
现在的Heroku更新OK
Now Heroku updates OK
现在运行postgresql数据库:
And now run the postgresql database:
$ heroku run rake db:migrate
再见!
这篇关于SQLite3参考部署简单的Heroku Rails应用程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!