Обновление Postgres.app, теперь приложение Rails не запускается
Я только что обновил свой Postgres.app до последней версии (9.2.4.1) и теперь не могу запустить приложение Rails, используя Foreman или сервер Rails.
/Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg.rb:4:in `require': dlopen(/Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg_ext.bundle, 9): Library not loaded: @executable_path/../lib/libssl.1.0.0.dylib (LoadError)
Referenced from: /Applications/Postgres.app/Contents/MacOS/lib/libpq.dylib
Reason: image not found - /Users/memoht/Sites/myapp/.gem/ruby/1.9.3/gems/pg-0.15.1/lib/pg_ext.bundle
Просмотрел документацию Postgres.app
Обновление с 9.2.2.0 до 9.2.4.1 не является новым второстепенным выпуском, поэтому не должно включать pg_upgrade
.bashrc имеет правильную настройку для PATH
PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"
Деинсталлировано и переустановлено PG gem.
Сделал ошибку, думая, что мне нужно установить PostGIS через homebrew, но это автоматически установило Postgres через Brew плюс множество других зависимостей.
Если я поменяю версию Postgres.app обратно на 9.2.2.0, все снова будет работать. Так как Postgres.app - это установка методом перетаскивания, почему это вызвано обновлением с 9.2.2.0 до 9.2.4.1?
2 ответа
Я нашел решение, которое работает для меня и требует минимального взлома / настройки. Вам нужно сделать это только один раз, и это будет работать для каждой установки пакета. Добавьте следующее в ваш.bash_profile,.bash_rc или эквивалентный:
export DYLD_FALLBACK_LIBRARY_PATH=/Applications/Postgres.app/Contents/MacOS/lib:$DYLD_LIBRARY_PATH
(Предполагается, что вы установили Postgres.app в папке по умолчанию). Затем перезапустите сеанс терминала и попробуйте снова.
Прямой экспорт в DYLD_LIBRARY_PATH может вызвать серьезные проблемы с другими приложениями, которые зависят от него, но использование резервного пути позволяет избежать этих проблем.
Смотрите также:
РЕДАКТИРОВАТЬ: Кажется, что установка DYLD_FALLBACK_LIBRARY_PATH вызывает ошибку при попытке запустить psql. Чтобы это исправить, вы можете добавить следующие две строки в ваш.bash_profile:
alias psql="(. ~/.bash_profile; unset DYLD_FALLBACK_LIBRARY_PATH; psql)";
Это предполагает, что вы используете bash и что ваш.bash_profile находится в вашем домашнем каталоге. Если это не так (или если вы используете.bashrc или другую настройку среды вместо.bash_profile), измените ~/.bash_profile
часть команды к пути к сценарию установки вашей среды.
Команды с псевдонимами в основном запускают подоболочку, которая не влияет на текущую среду bash. Поэтому, когда он сбрасывает переменную DYLD_FALLBACK_LIBRARY_PATH, это только временно. После выхода из psql переменная окружения будет снова установлена, чтобы rails функционировал должным образом.
Вероятно, ваш pg gem в вашем приложении был создан на основе старых библиотек. Попробуйте перестроить его на новый Postgres.app:
$ gem uninstall pg
[...]
$ bundle install
[...]
"installing pg" (or something..)