簡體   English   中英

'pg'在本地工作,但在部署到Heroku時不行

[英]'pg' works locally, but not when deployed to Heroku

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版本,沒有問題。行為不當的應用程序中的哪些文件可能會導致這種不同的行為?我正在努力找出問題所在,但到目前為止還沒有運氣。

檢查您的Bundler配置 為了確保您那里沒有任何東西,請運行bundle config並可能需要bundle remove <config name> 在這種情況下,請嘗試bundle remove build.pg ,以防設置與默認設置沖突的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM