“sqlite3.h”缺少推动的Rails应用时的Heroku(“sqlite3.h” missin

2019-06-24 04:52发布

我下面这个教程 ,但是当我试图推到Heroku的失败。 看来“sqlite3.h”丢失。 我是新来的发展,所以我不知道会帮助什么信息的人诊断问题,所以这里的一切:)。 我在Mac OS X 10.7狮子运行。 这里是我正在使用的所有版本:

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/ | git@heroku.com: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 git@heroku.com:blazing-mountain-3659.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com: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”,第二个命令之间的差异“未能一些裁判推到‘git@heroku.com:钎山3659.git’”?

Answer 1:

所以你要删除的sqlite3或将其移动到你的Gemfile开发组的Heroku使用PostgreSQL的。

检查你的Gemfile.lock的,可能对sqlite3的相关性的任何其他宝石,因为这也可能会导致问题。



Answer 2:

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


Answer 3:

我有一个类似的问题,我是不是即使使用sqlite3的任何东西,但在宝石文件取出后我仍然有这个错误

有什么解决它对于我来说是一个commit命令

git commit -am 

我上找到这个教程



Answer 4:

发生了什么事我的是,我正沿着Heroku的教程以下,当我使用git push heroku master它从我的最新git的承诺推(很明显!)

我忘了是在Git的眼里,我仍然使用SQLite中的Gemfile! 我傻!

所以我用git add . 接着是git commit -m "Changed to Postgres." 这样的Git知道这些变化。 之后推动我工作得很好。



文章来源: “sqlite3.h” missing when pushing Rails app to Heroku