Ogni volta che eseguo bundle install
sul mio VPS (versione CentOS Linux 7.0.1406 (Core)) viene visualizzato un errore durante l'installazione di pg gem.L'installazione di pg gem ha esito negativo, impossibile trovare l'intestazione libpq-fe.h
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
posso installare pg autonomo con: gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config
e il problema è risolto.
Quindi ho aggiunto un task capistrano per creare un file ./bundle/config per la distribuzione con la chiave build.pg impostata con il percorso per pg_config sul mio VPS. Nel Capistrano config/deploy.rb
viene invocato lo before bundler:install
.
desc "Create bundle config"
task :prepare_bundle_config do
on roles(:app) do
within release_path do
execute :bundle, 'config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config --local'
end
end
end
ho i pacchetti necessari installati:
postgresql94-server.x86_64
postgresql94-devel.x86_64
postgresql94-libs.x86_64
libpqxx.x86_64
libpqxx-devel.x86_64
Ecco i Capistrano * gemme che ho installato
bundle list | grep capistrano
* capistrano (3.3.5)
* capistrano-bundler (1.1.4)
* capistrano-rails (1.1.2)
* capistrano-rbenv (2.0.3)
* capistrano-stats (1.1.1)
Che cosa mi manca qui per installare correttamente pg con bundler? Si prega di lasciare un commento se avete bisogno di ulteriori informazioni e aggiornerò questo post.
L'attività personalizzata può essere eseguita con Capistrano in modo efficiente e indipendente? Che produzione hai da Capistrano? – JoePasq
Grazie per la risposta: ecco un elenco con l'output di capistrano (con debug) https://gist.github.com/whargrove/03ff94d1b6e7648030ed – whargrove
: prepare_bundle_config non può essere eseguito in modo indipendente perché usa release_path, quindi è disponibile solo durante l'attività di distribuzione. – whargrove