Как включить модули Contrib в базе данных Heroku Postgres
Я пытаюсь использовать модули Contrib в новых общих базах данных Postgres 9 на Heroku. Более конкретно, модули pg_trgm и fuzzystrmatch. В документации говорится:
Кроме того, доступно множество бесплатных расширений, таких как fuzzystrmatch, pg_trgm и unaccent.
Я не могу найти какую-либо документацию о том, КАК реально включить эти модули в общую базу данных Heroku. См. Ответ ниже.
Примечание:
Я попытался добавить их, подключившись к базе данных с помощью
heroku pg:psql HEROKU_POSTGRESQL_BROWN
и работает
create extension pg_trgm
create extension fuzzystrmatch
но после попытки использовать его с помощью
SELECT levenshtein('tests', 'test');
он все еще сказал
ERROR: function levenshtein(unknown, unknown) does not existLINE 1: SELECT levenshtein('tests', 'test');
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Кто-нибудь знает, почему это происходит?
Ответы
Ответ 1
Найден ответ здесь при очистке. Не знаю, почему это не появилось ни в одном из моих поисков Google. Чтобы оставить вопрос здесь, если кто-то другой использует ту же формулировку для поиска этого.
Чтобы включить модули, вам необходимо добавить их к миграции следующим образом:
def up
execute "create extension fuzzystrmatch"
execute "create extension pg_trgm"
end
Ответ 2
В новых версиях Rails этого достаточно:
def change
enable_extension "fuzzystrmatch"
enable_extension "pg_trgm"
end
Если вам нужно написать методы up
и down
, соответствующий метод enable_extension
будет disable_extension
.