Как использовать расширения postgres на Heroku? И как обрабатывать их миграции?

У меня есть приложение Rails, включающее драгоценные камни pg_search и queue_classic. Оба они используют расширения PostgreSQL, например, unaccent, pg_trgm и ps-something-something (извините, не на моей машине разработки и не помню).

Я выполняю развертывание в Heroku, и у меня возникают проблемы с запуском моих миграций, которые выполняют эти расширения.

e.g.,

def up
  execute "create extension unaccent"
  execute "create extension pg_trgm"
end

У меня сложилось впечатление, что Heroku поддерживает их отсюда https://devcenter.heroku.com/articles/full-text-search и тот факт, что Heroku использует queue_classic https://github.com/ryandotsmith/queue_classic.

Мне не удалось найти никакой информации, объясняющей, как использовать эти расширения postgres на Heroku. Или даже если они доступны для общих баз данных или только для выделенных.

Итак, мои вопросы:

  1. Как сделать эти расширения доступными для моего приложения на Heroku?
  2. Как мне обрабатывать миграции, чтобы эти расширения были доступны для сред разработки и тестирования, но не нарушали миграции в промежуточной или производственной среде или в средах, если Heroku ограничивает этот тип выполнения.

Очень ценю любые идеи, особенно те, которые сопровождаются указателями на соответствующую информацию/инструкции.

Спасибо


person Andy Harvey    schedule 18.05.2012    source источник


Ответы (1)


Если вы используете старые стандартные планы общей базы данных, они, вероятно, не будут работать, поэтому вам нужно перейти на новые общие планы или производственные планы.

person Neil Middleton    schedule 18.05.2012
comment
Спасибо, Нил, понятно, что требуется 9.1. Вы знаете что-нибудь о специфике Heroku? т. е. нужно ли мне запускать эти миграции для создания расширений? Они просто доступны по умолчанию? Предположим, я мог бы просто попробовать, но я все еще удивлен отсутствием документации. Должно быть, это довольно распространенная потребность...? - person Andy Harvey; 18.05.2012
comment
Все это все еще довольно новое, и многие вещи PG9 все еще находятся в стадии бета-тестирования. Я думаю, вам нужно выполнить миграцию, чтобы включить расширения в текущих планах. - person Neil Middleton; 18.05.2012
comment
Спасибо, Нил, это сработало отлично. Мне пришлось переключить свое приложение на новую базу данных heroku addons:add heroku-postgresql:dev, а затем включить 9.1 в качестве базы данных по умолчанию heroku pg:promote HEROKU_POSTGRESQL_PURPLE. Я не уверен, что имя базы данных будет отличаться для разных случаев. Вы можете проверить имена с помощью heroku pg:info. - person Andy Harvey; 20.05.2012
comment
URL-адрес базы данных Postgres работает немного иначе, чем старый DATABASE_URL, который у нас был раньше — теперь он построен таким образом, что дает вам уникальный «цвет» в базе данных, который вы затем pg:promote' to your DATABASE_URL` - person Neil Middleton; 21.05.2012
comment
Не могли бы вы рассказать о том, как установить расширения? (1) Как определить список расширений, которые уже установлены в общей папке/расширении Heroku Postgres? (2) Как мы устанавливаем произвольные сторонние расширения, например. с pgxn.org? - person Noach Magedman; 15.01.2013
comment
@Noach (1) Полный список здесь; (2) Вы не можете (афаик). - person davetapley; 23.01.2013
comment
Спасибо, @dukedave. В статье devcenter уточняется, что окончательный список можно получить по адресу psql=> show extwlist.extensions; (по всей видимости, Heroku использует расширение белого списка PostgreSQL Extension из github.com /Димитри/pgextwlist) - person Noach Magedman; 23.01.2013