Arhn - архитектура программирования

'pg' работает локально, но не при развертывании в 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

Мой гемфайл:

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), проблем нет. Какие файлы в моем неправильном приложении могут вызвать такое другое поведение? Я работаю над изоляцией проблемы, но пока не повезло.


  • Вы подготовили надстройку postgres? Вы можете проверить это с помощью heroku addons | grep POSTGRES. 24.01.2016
  • Я только что сделал (команда, которую вы дали, показывает postgres), и у меня все еще та же ошибка. 24.01.2016
  • Странно, возможно, это не тот билдпак на Heroku. Попробуйте выдать heroku buildpacks; результат героку/рубин? 24.01.2016
  • У него нет набора buildpack. Я использовал heroku create, как написано в документации, и не делал ничего, кроме добавления надстройки PostgreSQL. Стек cedar-14. 24.01.2016
  • Попробуйте heroku buildpacks:set heroku/ruby. В этом нет необходимости, но это не повредит. Затем попробуйте снова отправить свое репо. 24.01.2016
  • Та же проблема, к сожалению. 24.01.2016
  • Не могли бы вы добавить свой Gemfile к вопросу? 24.01.2016
  • Ну вот. Спасибо за помощь. 24.01.2016
  • Извините, я тоже не вижу здесь ничего плохого… Последнее, что я лично попытался бы сделать, это уничтожить и воссоздать приложение Heroku. Я использую Heroku для большинства своих проектов и никогда не сталкивался с этой проблемой. 24.01.2016
  • Я уже уничтожил его (дважды) и воссоздал (дважды). В любом случае, спасибо за ваше время и усилия. 24.01.2016
  • вы пробуете это в production среде? 24.01.2016

Ответы:


1

Проверьте свою конфигурацию Bundler. Чтобы убедиться, что у вас там ничего нет, запустите bundle config и, возможно, bundle remove <config name>. В этом случае попробуйте bundle remove build.pg, если вы установили что-то, что противоречит значениям по умолчанию.

05.02.2016
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..