app Heroku不能通过Bundler安装gems吗

时间:2022-07-14 20:42:00

This is how looks my Gemfile:

这是我的Gemfile:

source 'http://rubygems.org'

gem 'rails', '3.1.2'

#gem 'sqlite3'
gem 'mysql2'
gem "rvm", "~> 1.9.2"
gem 'authlogic'
gem "taps", "~> 0.3.23"
gem "paperclip", "~> 2.4.5"
gem 'aws-s3'
gem 'actionmailer'

gem 'will_paginate'

group :assets do
  gem 'sass-rails',   '~> 3.1.5.rc.2'
  gem 'coffee-rails', '~> 3.1.1'
  gem 'uglifier', '>= 1.0.3'
end

group :production do
  gem 'therubyracer-heroku', '~> 0.8.1.pre3'
  gem 'pg'
end

gem 'jquery-rails'

and this is the output from pushing the app to Heroku:

这是将app推送到Heroku的输出:

Counting objects: 307, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (291/291), done.
Writing objects: 100% (307/307), 491.60 KiB | 47 KiB/s, done.
Total 307 (delta 43), reused 0 (delta 0)

-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.1.rc.7
       Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
       Fetching gem metadata from http://rubygems.org/.......
       Installing rake (0.9.2.2)
       Installing multi_json (1.0.4)
       Installing activesupport (3.1.2)
       Installing builder (3.0.0)
       Installing i18n (0.6.0)
       Installing activemodel (3.1.2)
       Installing erubis (2.7.0)
       Installing rack (1.3.6)
       Installing rack-cache (1.1)
       Installing rack-mount (0.8.3)
       Installing rack-test (0.6.1)
       Installing hike (1.2.1)
       Installing tilt (1.3.3)
       Installing sprockets (2.1.2)
       Installing actionpack (3.1.2)
       Installing mime-types (1.17.2)
       Installing polyglot (0.3.3)
       Installing treetop (1.4.10)
       Installing mail (2.3.0)
       Installing actionmailer (3.1.2)
       Installing arel (2.2.1)
       Installing tzinfo (0.3.31)
       Installing activerecord (3.1.2)
       Installing activeresource (3.1.2)
       Installing authlogic (3.1.0)
       Installing xml-simple (1.1.1)
       Installing aws-s3 (0.6.2)
       Installing cocaine (0.2.1)
       Installing coffee-script-source (1.2.0)
       Installing execjs (1.3.0)
       Installing coffee-script (2.2.0)
       Installing rack-ssl (1.3.2)
       Installing json (1.6.5) with native extensions
       Installing rdoc (3.12)
       Installing thor (0.14.6)
       Installing railties (3.1.2)
       Installing coffee-rails (3.1.1)
       Installing jquery-rails (1.0.19)
       Installing mysql2 (0.3.11) with native extensions
       Installing paperclip (2.4.5)
       Installing pg (0.12.2) with native extensions
       Using bundler (1.1.rc.7)
       Installing rails (3.1.2)
       Installing rest-client (1.6.7)
       Installing rvm (1.9.2)
       Installing sass (3.1.12)
       Installing sass-rails (3.1.5)
       Installing sequel (3.20.0)
       Installing sinatra (1.0)
       Installing sqlite3 (1.3.5) with native extensions Unfortunately, a fatal error has occurred. Please report this error to the Bundler issue tracker at https://github.com/carlhuda/bundler/issues so that we can fix it. Thanks!
       /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
       /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_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5 for inspection.
       Results logged to /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/sqlite3-1.3.5/ext/sqlite3/gem_make.out
       from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:486:in `block in build_extensions'
       from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:446:in `each'
       from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:446:in `build_extensions'
       from /usr/local/lib/ruby/1.9.1/rubygems/installer.rb:198:in `install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/source.rb:90:in `block in install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/rubygems_integration.rb:82:in `preserve_paths'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/source.rb:89:in `install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:73:in `block in install_gem_from_spec'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/rubygems_integration.rb:97:in `with_build_args'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:72:in `install_gem_from_spec'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:56:in `block in run'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:55:in `run'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/installer.rb:12:in `install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/cli.rb:220:in `install'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor/task.rb:22:in `run'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor.rb:263:in `dispatch'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/lib/bundler/vendor/thor/base.rb:386:in `start'
       from /tmp/build_14aejbvbx900f/vendor/bundle/ruby/1.9.1/gems/bundler-1.1.rc.7/bin/bundle:13:in `<top (required)>'
       from vendor/bundle/ruby/1.9.1/bin/bundle:19:in `load'
       from vendor/bundle/ruby/1.9.1/bin/bundle:19:in `<main>'
 !
 !     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:_my_repo_.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:_my_repo_.git'

What is wrong? I have the same set up in my else app and it works fine... I will much grateful for every help, struggling with this problem whole afternoon...

是什么错了吗?我在我的其他应用程序中设置了相同的设置,它运行良好…我将非常感谢所有的帮助,整个下午都在为这个问题而努力……

EDIT: Also I tried remove repository and create a new one, but still the same.

编辑:我也尝试删除存储库并创建一个新的,但是仍然是一样的。

7 个解决方案

#1


27  

Just put your sqlite3 under text/development group in Gemfile, adding thin and pg in production gemfile group also:

只需将您的sqlite3放在Gemfile中的text/development group下,并在Gemfile group中添加thin和pg:

  1. edit the Gemfile like following:

    编辑Gemfile如下所示:

    gem 'sqlite3', :group => [:development, :test]
    group :production do
      gem 'thin'
      gem 'pg'
    end
    
  2. remove Gemfile.lock

    删除Gemfile.lock

  3. run bundle install --without production
  4. 运行bundle install——无需生产
  5. git add .
  6. git添加。
  7. git commit -am "bundle updating sqlite3"
  8. git提交-am“bundle update sqlite3”
  9. git push heroku +master
  10. git push heroku +的主人

#2


9  

So, after a little talk with Heroku suporters, the "problem" was in taps gem - sqlite3 has an association to it. The working solution is:

因此,在与Heroku suporter进行了简短的交谈后,“问题”出现在tap gem中——sqlite3与之相关。工作的解决方案是:

group :development do
  gem 'taps'
  gem 'rvm'
end

#3


5  

If you change Gemfile DO NOT forget

如果您更改Gemfile,请不要忘记。

git add .
git commint -m"ufff"

then

然后

git push heroku master

#4


2  

Have you added Gemfile to working copy and committed it to your local repository? Maybe you are pushing old version of Gemfile and Gemfile.lock?

是否已将Gemfile添加到工作副本并提交到本地存储库?也许你正在推广旧版本的Gemfile和Gemfile.lock?

#5


2  

In Gemfile replace 'gem sqlite3' with the next:

在Gemfile中,将“gem sqlite3”替换为下一个:

group :development do
gem 'sqlite3'
end
gem 'pg'

#6


1  

You need to do bundle at the command line in your project folder.

您需要在项目文件夹中的命令行中执行bundle。

This will update your Gemfile.lock file - you need to commit both this and Gemfile and then repush to Heroku.

这将更新您的Gemfile。锁定文件-你需要提交这个和Gemfile,然后重新推到Heroku。

#7


0  

I had a slightly unique situation with the gem 'mailcatcher'.

我有一个稍微独特的情况与宝石“mailcatcher”。

I had the gem installed for all environments, but i realized that one of its dependencies is sqlite3. I moved the mailcatcher gem to the development group and it fixed my problem.

我已经为所有环境安装了gem,但是我意识到它的一个依赖项是sqlite3。我将mailcatcher gem转移到开发组,它解决了我的问题。

#1


27  

Just put your sqlite3 under text/development group in Gemfile, adding thin and pg in production gemfile group also:

只需将您的sqlite3放在Gemfile中的text/development group下,并在Gemfile group中添加thin和pg:

  1. edit the Gemfile like following:

    编辑Gemfile如下所示:

    gem 'sqlite3', :group => [:development, :test]
    group :production do
      gem 'thin'
      gem 'pg'
    end
    
  2. remove Gemfile.lock

    删除Gemfile.lock

  3. run bundle install --without production
  4. 运行bundle install——无需生产
  5. git add .
  6. git添加。
  7. git commit -am "bundle updating sqlite3"
  8. git提交-am“bundle update sqlite3”
  9. git push heroku +master
  10. git push heroku +的主人

#2


9  

So, after a little talk with Heroku suporters, the "problem" was in taps gem - sqlite3 has an association to it. The working solution is:

因此,在与Heroku suporter进行了简短的交谈后,“问题”出现在tap gem中——sqlite3与之相关。工作的解决方案是:

group :development do
  gem 'taps'
  gem 'rvm'
end

#3


5  

If you change Gemfile DO NOT forget

如果您更改Gemfile,请不要忘记。

git add .
git commint -m"ufff"

then

然后

git push heroku master

#4


2  

Have you added Gemfile to working copy and committed it to your local repository? Maybe you are pushing old version of Gemfile and Gemfile.lock?

是否已将Gemfile添加到工作副本并提交到本地存储库?也许你正在推广旧版本的Gemfile和Gemfile.lock?

#5


2  

In Gemfile replace 'gem sqlite3' with the next:

在Gemfile中,将“gem sqlite3”替换为下一个:

group :development do
gem 'sqlite3'
end
gem 'pg'

#6


1  

You need to do bundle at the command line in your project folder.

您需要在项目文件夹中的命令行中执行bundle。

This will update your Gemfile.lock file - you need to commit both this and Gemfile and then repush to Heroku.

这将更新您的Gemfile。锁定文件-你需要提交这个和Gemfile,然后重新推到Heroku。

#7


0  

I had a slightly unique situation with the gem 'mailcatcher'.

我有一个稍微独特的情况与宝石“mailcatcher”。

I had the gem installed for all environments, but i realized that one of its dependencies is sqlite3. I moved the mailcatcher gem to the development group and it fixed my problem.

我已经为所有环境安装了gem,但是我意识到它的一个依赖项是sqlite3。我将mailcatcher gem转移到开发组,它解决了我的问题。