' PG'在本地工作,但在部署到Heroku时则不行

时间:2016-01-23 23:33:28

标签: ruby-on-rails heroku bundler rails-postgresql pg

pg 0.18.4在我的开发环境中工作正常但在Heroku中没有。在本地,当我刚刚运行bundler install时它首先失败但在我手动运行gem install pg -v '0.18.4'时成功了。我尝试配置一个Heroku Postgres插件,但无济于事。

当我运行git push heroku master时,我得到以下输出:

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

我的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

更新:Heroku帮助即将结束。

当我创建一个新的Rails应用程序并进行部署时(相同的pg版本,没有问题。我行为不端的应用程序中的哪些文件可能导致这种不同的行为?我正在努力解决问题,但到目前为止没有这样的运气。

1 个答案:

答案 0 :(得分:0)

检查Bundler configuration。为确保您没有任何内容,请运行bundle config,并可能bundle remove <config name>。在这种情况下,如果您设置了与默认设置冲突的内容,请尝试bundle remove build.pg