ruby-on-rails - rails - heroku postgres tutorial
Cómo habilitar módulos contrib en la base de datos Heroku Postgres (2)
Estoy tratando de usar los módulos contrib en las nuevas bases de datos compartidas de Postgres 9 en Heroku. Más específicamente, los módulos pg_trgm y fuzzystrmatch . En la documentación dice
Además, muchas extensiones complementarias están disponibles, como fuzzystrmatch, pg_trgm y acento.
Parece que no puedo encontrar ninguna documentación sobre CÓMO habilitar realmente estos módulos en una base de datos Heroku compartida. Ver la respuesta a continuación.
NOTA:
Intenté agregarlos conectándome a la base de datos con
heroku pg:psql HEROKU_POSTGRESQL_BROWN
y corriendo
create extension pg_trgm
create extension fuzzystrmatch
pero después de tratar de usarlo con
SELECT levenshtein(''tests'', ''test'');
aún decía
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.
¿Alguien sabe por qué sucede esto?
En las versiones más nuevas de Rails, debería ser suficiente hacer:
def change
enable_extension "fuzzystrmatch"
enable_extension "pg_trgm"
end
Si necesita escribir métodos up
y down
, el método correspondiente para enable_extension
es disable_extension
.
Encontré la respuesta aquí mientras recorría . No sé por qué no apareció en ninguna de mis búsquedas de Google. Voy a dejar la pregunta aquí si alguien más usa la misma redacción para buscar esto.
Para habilitar módulos, debe agregarlos a una migración de la siguiente manera:
def up
execute "create extension fuzzystrmatch"
execute "create extension pg_trgm"
end