简体   繁体   中英

'pg' works locally, but not when deployed to Heroku

pg 0.18.4 works just fine in my development environment but not in Heroku. Locally, it first failed when I just ran bundler install but then succeeded when I manually ran gem install pg -v '0.18.4' . I tried provisioning a Heroku Postgres add-on, to no avail.

When I run git push heroku master , I get the following output:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
remote:        current directory: /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/gems/pg-0.18.4/ext
remote:        /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/ruby-2.3.0/bin/ruby -r ./siteconf20160123-315-8ytli9.rb extconf.rb --with-pg-config=/usr/pgsql-9.4/bin/pg_config
remote:        Using config values from /usr/pgsql-9.4/bin/pg_config
remote:        sh: 1: /usr/pgsql-9.4/bin/pg_config: not found
remote:        sh: 1: /usr/pgsql-9.4/bin/pg_config: not found
remote:        checking for libpq-fe.h... no
remote:        Can't find the 'libpq-fe.h header
remote:        *** extconf.rb failed ***
remote:        Could not create Makefile due to some reason, probably lack of necessary
remote:        libraries and/or headers.  Check the mkmf.log file for more details.  You may
remote:        need configuration options.
remote:        Provided configuration options:
remote:        --with-opt-dir
remote:        --without-opt-dir
remote:        --with-opt-include
remote:        --without-opt-include=${opt-dir}/include
remote:        --with-opt-lib
remote:        --without-opt-lib=${opt-dir}/lib
remote:        --with-make-prog
remote:        --without-make-prog
remote:        --srcdir=.
remote:        --curdir
remote:        --ruby=/tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/ruby-2.3.0/bin/$(RUBY_BASE_NAME)
remote:        --with-pg
remote:        --without-pg
remote:        --enable-windows-cross
remote:        --disable-windows-cross
remote:        --with-pg-config
remote:        --with-pg-dir
remote:        --without-pg-dir
remote:        --with-pg-include
remote:        --without-pg-include=${pg-dir}/include
remote:        --with-pg-lib
remote:        --without-pg-lib=${pg-dir}/lib
remote:        To see why this extension failed to compile, please check the mkmf.log which can be found here:
remote:        /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/extensions/x86_64-linux/2.3.0-static/pg-0.18.4/mkmf.log
remote:        extconf failed, exit code 1
remote:        Gem files will remain installed in /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/gems/pg-0.18.4 for inspection.
remote:        Results logged to /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/extensions/x86_64-linux/2.3.0-static/pg-0.18.4/gem_make.out
...
Installing tzinfo 1.2.2
remote:        
remote:        Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
remote:        
remote:        current directory: /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/gems/pg-0.18.4/ext
remote:        /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/ruby-2.3.0/bin/ruby -r ./siteconf20160123-315-8ytli9.rb extconf.rb --with-pg-config=/usr/pgsql-9.4/bin/pg_config
remote:        Using config values from /usr/pgsql-9.4/bin/pg_config
remote:        sh: 1: /usr/pgsql-9.4/bin/pg_config: not found
remote:        sh: 1: /usr/pgsql-9.4/bin/pg_config: not found
remote:        checking for libpq-fe.h... no
remote:        Can't find the 'libpq-fe.h header
remote:        *** extconf.rb failed ***
remote:        Could not create Makefile due to some reason, probably lack of necessary
remote:        libraries and/or headers.  Check the mkmf.log file for more details.  You may
remote:        need configuration options.
remote:        
remote:        Provided configuration options:
remote:        --with-opt-dir
remote:        --without-opt-dir
remote:        --with-opt-include
remote:        --without-opt-include=${opt-dir}/include
remote:        --with-opt-lib
remote:        --without-opt-lib=${opt-dir}/lib
remote:        --with-make-prog
remote:        --without-make-prog
remote:        --srcdir=.
remote:        --curdir
remote:        --ruby=/tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/ruby-2.3.0/bin/$(RUBY_BASE_NAME)
remote:        --with-pg
remote:        --without-pg
remote:        --enable-windows-cross
remote:        --disable-windows-cross
remote:        --with-pg-config
remote:        --with-pg-dir
remote:        --without-pg-dir
remote:        --with-pg-include
remote:        --without-pg-include=${pg-dir}/include
remote:        --with-pg-lib
remote:        --without-pg-lib=${pg-dir}/lib
remote:        
remote:        To see why this extension failed to compile, please check the mkmf.log which can be found here:
remote:        
remote:        /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/extensions/x86_64-linux/2.3.0-static/pg-0.18.4/mkmf.log
remote:        
remote:        extconf failed, exit code 1
remote:        
remote:        Gem files will remain installed in /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/gems/pg-0.18.4 for inspection.
remote:        Results logged to /tmp/build_a5396c397d6502ad1b8bd59388bde2be/vendor/bundle/ruby/2.3.0/extensions/x86_64-linux/2.3.0-static/pg-0.18.4/gem_make.out

My Gemfile:

ruby '2.3.0'
source 'https://rubygems.org'

# Server
gem 'rails', '4.2.5'
gem 'unicorn'
gem 'figaro'

# Database
gem 'bcrypt', '~> 3.1.7'
gem 'paper_trail', '~> 4.0.0'
gem 'pg'
gem 'default_value_for'

# Json
gem 'jbuilder', '~> 2.0'
gem 'oj'
gem 'json-schema'
gem 'responders'

# OAuth
gem 'doorkeeper'

group :production do
  # Heroku
  gem 'rails_12factor'
  # Exceptions
  gem 'exception_notification'
end

group :development do
  # Deployment
  gem 'capistrano', '3.3.3'
  gem 'capistrano-rails'
  gem 'capistrano3-unicorn'
  gem 'capistrano-rvm'
  gem 'capistrano-postgresql'
  gem 'capistrano-safe-deploy-to', '~> 1.1.1'

  # Server
  gem 'spring'

  # Database
  gem 'rails-erd'
end

group :development, :test do
  # Error Pages
  gem 'better_errors'
  gem 'binding_of_caller'

  # Database
  gem 'faker'

  # Debug
  gem 'byebug'

  # Logging
  gem 'lograge'

  # Testing
  # This can't just be in group :test because of https://github.com/rspec/rspec-rails/issues/148
  gem 'rspec-rails'
end

group :test do
  # Database
  # Mocking
  gem 'factory_girl'
  gem 'factory_girl_rails'
  # Cleaning
  gem 'database_cleaner'

  # Code Coverage
  gem 'simplecov', require: false

  # Debug
  gem 'pry-rescue'
  gem 'pry-stack_explorer'

  # Profiling
  # https://github.com/sinisterchipmunk/rspec-prof/issues/10
  gem 'rspec-prof', git: 'https://github.com/sinisterchipmunk/rspec-prof.git'
end

group :doc do
  # RDoc
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', '~> 0.4.0', group: :doc
end

Update : Heroku Help is at wit's end.

When I create a new Rails app and deploy it (same pg version, there are no problems. What files in my misbehaving app could possibly cause such different behavior? I'm working on isolating the problem, but no such luck so far.

Check your Bundler configuration . To make sure you don't have anything there, run bundle config and possibly bundle remove <config name> . In this case, try bundle remove build.pg in case you set something that's conflicting with the defaults.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM