I've found a number of posts on this same subject (here's one) and thought I made the right changes but I still can't solve the issue.
我在同一个主题(这里是一个)上发现了一些帖子,并认为我做了正确的更改,但我仍然无法解决问题。
After completing the bundle install, I push to heroku, I get the following error when it reaches the sqlite3 install.
完成捆绑安装后,我推送到heroku,当它到达sqlite3安装时出现以下错误。
Installing sqlite3 (1.3.5) 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_13nbwv3kitbub/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5 for inspection.
Results logged to /tmp/build_13nbwv3kitbub/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out
An error occured while installing sqlite3 (1.3.5), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.5'` succeeds before bundling.
!
! Failed to install gems via Bundler.
!
! Heroku push rejected, failed to compile Ruby/rails app
To git@heroku.com:morning-dawn-1372.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:morning-dawn-1372.git'
My Gemfile looks like this:
我的Gemfile看起来像这样:
source 'https://rubygems.org'
gem 'rails', '3.2.2'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'json'
group :development, :test do
gem 'sqlite3-ruby', :require => 'sqlite3'
gem 'sqlite3', '1.3.5'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
group :production do
gem 'pg', '0.12.2'
end
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug'
it looks like I have both
看起来我有两个
Using sqlite3 (1.3.5)
Using sqlite3-ruby (1.3.3)
on my system. Not sure if this is creatign an issue, but explains why I excluded both in the gemfile.
在我的系统上。不确定这是否是一个问题,但解释了为什么我在gemfile中排除了这两个问题。
Environmental info:
$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [i386-cygwin]
$ rails -v
Rails 3.2.2
3 个解决方案
#1
12
Run the bundle
command and then make sure that both the Gemfile and Gemfile.lock are checked into the repo before pushing to Heroku.
运行bundle命令,然后确保在推送到Heroku之前将Gemfile和Gemfile.lock都检入repo。
#2
1
You will also get this error if sqlite is specified in your Gemfile without a group- for example
如果在没有组的Gemfile中指定sqlite,您也会收到此错误
gem 'rails', '3.2.13'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
# below is the line that's giving you trouble
gem "sqlite3", "~> 1.3.7"
Heroku does not allow sqlite in production, so you must either delete this line or change this to something like
Heroku不允许在生产中使用sqlite,因此您必须删除此行或将其更改为类似的内容
...
group :development, :test do
gem "sqlite3", "~> 1.3.7", :require => "sqlite3"
end
then do bundle install
, then git add
and git commit
your changes to Gemfile and Gemfile.lock.
然后执行bundle install,然后git add和git将更改提交到Gemfile和Gemfile.lock。
After you have done this, your git push heroku master
should work.
完成此操作后,你的git push heroku master应该可以正常工作。
#3
1
Try this:
- Open the Gemfile.lock and scroll down to sqlite3 (1.3.x) under 'specs:'
- Make sure it appears only as sqlite3 (1.3.x) with no extra jazz.
- If any extra tags such as "-x86-mingw32" is displayed then delete it.
- Run Bundle Install.
- Then try pushing Heroku master.
打开Gemfile.lock并向下滚动到'specs:'下的sqlite3(1.3.x)
确保它只显示为sqlite3(1.3.x),没有额外的爵士乐。
如果显示任何额外的标签,例如“-x86-mingw32”,则将其删除。
运行捆绑安装。
然后尝试推动Heroku大师。
Worked for me.
为我工作。
Edit
Now that I know better, please don't ever change the Gemfile.lock manually. This was written when I started coding in Rails on Windows. Try updating the particular gem or lock it to a version in your Gemfile.
现在我知道了,请不要手动更改Gemfile.lock。这是我在Windows上开始使用Rails进行编码时编写的。尝试更新特定的gem或将其锁定到Gemfile中的版本。
#1
12
Run the bundle
command and then make sure that both the Gemfile and Gemfile.lock are checked into the repo before pushing to Heroku.
运行bundle命令,然后确保在推送到Heroku之前将Gemfile和Gemfile.lock都检入repo。
#2
1
You will also get this error if sqlite is specified in your Gemfile without a group- for example
如果在没有组的Gemfile中指定sqlite,您也会收到此错误
gem 'rails', '3.2.13'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
# below is the line that's giving you trouble
gem "sqlite3", "~> 1.3.7"
Heroku does not allow sqlite in production, so you must either delete this line or change this to something like
Heroku不允许在生产中使用sqlite,因此您必须删除此行或将其更改为类似的内容
...
group :development, :test do
gem "sqlite3", "~> 1.3.7", :require => "sqlite3"
end
then do bundle install
, then git add
and git commit
your changes to Gemfile and Gemfile.lock.
然后执行bundle install,然后git add和git将更改提交到Gemfile和Gemfile.lock。
After you have done this, your git push heroku master
should work.
完成此操作后,你的git push heroku master应该可以正常工作。
#3
1
Try this:
- Open the Gemfile.lock and scroll down to sqlite3 (1.3.x) under 'specs:'
- Make sure it appears only as sqlite3 (1.3.x) with no extra jazz.
- If any extra tags such as "-x86-mingw32" is displayed then delete it.
- Run Bundle Install.
- Then try pushing Heroku master.
打开Gemfile.lock并向下滚动到'specs:'下的sqlite3(1.3.x)
确保它只显示为sqlite3(1.3.x),没有额外的爵士乐。
如果显示任何额外的标签,例如“-x86-mingw32”,则将其删除。
运行捆绑安装。
然后尝试推动Heroku大师。
Worked for me.
为我工作。
Edit
Now that I know better, please don't ever change the Gemfile.lock manually. This was written when I started coding in Rails on Windows. Try updating the particular gem or lock it to a version in your Gemfile.
现在我知道了,请不要手动更改Gemfile.lock。这是我在Windows上开始使用Rails进行编码时编写的。尝试更新特定的gem或将其锁定到Gemfile中的版本。