Heroku:推送拒绝,无法编译Ruby应用程序

我被困了一个星期试图解决这个问题。 我目前一直在关注在线讲座,但是我完全遵循了所有内容,而且讲师并没有任何帮助。 每当我尝试推送到heroku时,我会收到以下信息:

初始化存储库,完成。 计数对象:85,完成。 Delta压缩最多使用2个线程。 压缩对象:100%(76/76),完成。 书写对象:100%(85/85),27.36 KiB,完成。 总计85(delta 6),重复使用0(delta 0)

-----> Ruby app detected -----> Compiling Ruby/Rails -----> Using Ruby version: ruby-2.0.0 -----> Warning: Removing `Gemfile.lock` because it was generated on Windows. Bundler will do a full resolve so native gems are handled properly. This may result in unexpected gem versions being used in your app. In rare occasions Bundler may not be able to resolve your dependencies all. https://devcenter.heroku.com/articles/bundler-windows-gemfile -----> Installing dependencies using Bundler version 1.5.2 New app detected loading default bundler cache Running: bundle install --without development:test --path vendor/bundl -binstubs vendor/bundle/bin -j4 Your Gemfile lists the gem sqlite3 (>= 0) more than once. You should probably keep only one of them. While it's not a problem now, it could cause errors if you change the sion of just one of them later. Your Gemfile lists the gem sqlite3 (>= 0) more than once. You should probably keep only one of them. While it's not a problem now, it could cause errors if you change the sion of just one of them later. Your Gemfile lists the gem rspec-rails (= 2.6.1) more than once. You should probably keep only one of them. While it's not a problem now, it could cause errors if you change the sion of just one of them later. Fetching gem metadata from https://rubygems.org/......... Fetching additional metadata from https://rubygems.org/.. Resolving dependencies... Using builder (3.0.4) Using erubis (2.7.0) Using journey (1.0.4) Using rack (1.4.5) Using hike (1.2.3) Using tilt (1.4.1) Installing i18n (0.6.1) Using polyglot (0.3.3) Installing mime-types (1.25.1) Using tzinfo (0.3.38) Using bundler (1.5.2) Using coffee-script-source (1.6.3) Using execjs (2.0.2) Using json (1.8.1) Using thor (0.18.1) Installing multi_json (1.8.4) Installing rake (10.1.1) Installing arel (3.0.3) Using rack-cache (1.2) Using rack-test (0.6.2) Using rack-ssl (1.3.3) Using treetop (1.4.15) Using coffee-script (2.2.0) Using rdoc (3.12.2) Installing sass (3.2.13) Installing uglifier (2.4.0) Using sprockets (2.2.2) Using mail (2.5.4) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native tension. /tmp/build_903734dc-f591-44eb-8891-428ba3caf9e0/vendor/ruby-2.0.0/bin/ y 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 pat the location where your sqlite3 shared library is located). *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessa libraries and/or headers. Check the mkmf.log file for more details. 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=/tmp/build_903734dc-f591-44eb-8891-428ba3caf9e0/vendor/ruby-2.0 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}/ --enable-local --disable-local Gem files will remain installed in /tmp/build_903734dc-f591-44eb-8891- ba3caf9e0/vendor/bundle/ruby/2.0.0/gems/sqlite3-1.3.8 for inspection. Results logged to /tmp/build_903734dc-f591-44eb-8891-428ba3caf9e0/vend bundle/ruby/2.0.0/gems/sqlite3-1.3.8/ext/sqlite3/gem_make.out Installing activesupport (3.2.13) Installing pg (0.17.1) An error occurred while installing sqlite3 (1.3.8), and Bundler cannot ntinue. Make sure that `gem install sqlite3 -v '1.3.8'` succeeds before bundli Bundler Output: Your Gemfile lists the gem sqlite3 (>= 0) more than on You should probably keep only one of them. While it's not a problem now, it could cause errors if you change the sion of just one of them later. Your Gemfile lists the gem sqlite3 (>= 0) more than once. You should probably keep only one of them. While it's not a problem now, it could cause errors if you change the sion of just one of them later. Your Gemfile lists the gem rspec-rails (= 2.6.1) more than once. You should probably keep only one of them. While it's not a problem now, it could cause errors if you change the sion of just one of them later. Fetching gem metadata from https://rubygems.org/......... Fetching additional metadata from https://rubygems.org/.. Resolving dependencies... Using builder (3.0.4) Using erubis (2.7.0) Using journey (1.0.4) Using rack (1.4.5) Using hike (1.2.3) Using tilt (1.4.1) Installing i18n (0.6.1) Using polyglot (0.3.3) Installing mime-types (1.25.1) Using tzinfo (0.3.38) Using bundler (1.5.2) Using coffee-script-source (1.6.3) Using execjs (2.0.2) Using json (1.8.1) Using thor (0.18.1) Installing multi_json (1.8.4) Installing rake (10.1.1) Installing arel (3.0.3) Using rack-cache (1.2) Using rack-test (0.6.2) Using rack-ssl (1.3.3) Using treetop (1.4.15) Using coffee-script (2.2.0) Using rdoc (3.12.2) Installing sass (3.2.13) Installing uglifier (2.4.0) Using sprockets (2.2.2) Using mail (2.5.4) Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native tension. /tmp/build_903734dc-f591-44eb-8891-428ba3caf9e0/vendor/ruby-2.0.0/bin/ y 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 pat the location where your sqlite3 shared library is located). *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessa libraries and/or headers. Check the mkmf.log file for more details. 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=/tmp/build_903734dc-f591-44eb-8891-428ba3caf9e0/vendor/ruby-2.0 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}/ --enable-local --disable-local Gem files will remain installed in /tmp/build_903734dc-f591-44eb-8891- ba3caf9e0/vendor/bundle/ruby/2.0.0/gems/sqlite3-1.3.8 for inspection. Results logged to /tmp/build_903734dc-f591-44eb-8891-428ba3caf9e0/vend bundle/ruby/2.0.0/gems/sqlite3-1.3.8/ext/sqlite3/gem_make.out Installing activesupport (3.2.13) Installing pg (0.17.1) An error occurred while installing sqlite3 (1.3.8), and Bundler cannot ntinue. Make sure that `gem install sqlite3 -v '1.3.8'` succeeds before bundli ! ! Failed to install gems via Bundler. ! ! Detected sqlite3 gem which is not supported on Heroku. ! https://devcenter.heroku.com/articles/sqlite3 ! ! Push rejected, failed to compile Ruby app To git@heroku.com:tranquil-ridge-7489.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'git@heroku.com:tranquil-ridge-7489.git' 

我已经尝试重建gem文件,删除gemfile.lock并运行bundle installer,遵循以前的问题的解决方案,但我仍然收到此错误。

这是我目前的gemFile:

 source 'https://rubygems.org' gem 'rails', '3.2.13' # Bundle edge Rails instead: # gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3' # 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', :platforms => :ruby gem 'uglifier', '>= 1.0.3' end gem 'jquery-rails' # 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 'debugger' group :development do gem 'sqlite3' gem 'rspec-rails', '2.6.1', :require => 'rspec-rails' gem 'faker', '0.3.1' end group :test do gem 'sqlite3' gem 'rspec-rails', '2.6.1', :require => 'rpec-rails' gem 'webrat', '0.7.1' gem 'factory_girl_rails', '1.0' gem 'turn', :require => false end group :production do gem 'pg' end 

对此有何帮助?

我会推荐一些东西:

1)按照此处的说明处理部署在Windows上生成的Ruby项目时出现的Gemfile问题。

2)在Gemfile中执行以下操作

 group :test, :production do gem 'pg' end group :development do gem 'sqlite3' end 

这摆脱了生产部署中的sqlite3 。 使用它进行单元和集成测试,但使用PostgreSQL进行验收/function测试,因为这是Heroku上选择的RDBMS。 此外,每次仅引用您的gem一次。

3)在Heroku的部署环境中设置PostgreSQL附加组件的Hobby Dev版本 。

你不能在Heroku上使用SQLite ,你必须使用PostgreSQL。

您可以将其设置为在Heroku上使用PostgreSQL,但在开发中使用SQLite,在开发和生产环境中使用相同的数据库是一种很好的做法。

请注意,您多次列出gem 'sqlite3' ,包括开发组外的一个。 这导致Heroku尝试安装它。

我的建议是完全删除sqlite gem并将所有内容切换到PostgreSQL。

删除顶级gem sqlite3并在gemfile顶部添加ruby’2.0.0′

也在集团生产下添加gem 'rails_12factor'