SQLite3参考部署简单的Heroku Rails应用程序 [英] Sqlite3 reference deploying simple heroku Rails application

查看:75
本文介绍了SQLite3参考部署简单的Heroku Rails应用程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆