Как я могу определить метод Ruby в настраиваемом расширении Sequel, хранящемся в /lib/sequel/extensions/
, который будет отвечать за создание функции SQL сразу после загрузки расширения. Я не хочу иметь определение метода в файле миграции базы данных.
Я могу сделать это:
Sequel.migration do
change do
create_table :some_table do
primary_key :id
String :uuid, null: false, default: Sequel.function(:uuid_generate_v4), unique: true
end
end
end
И я знаю, что uuid_generate_v4
хранится в расширении uuid-ossp
, поэтому все, что мне нужно сделать, чтобы вызвать эту функцию, - это добавить расширение в мою кодовую базу.
К сожалению, я не знаю как. Каким будет самый чистый способ определить такую функцию и сделать ее вызываемой без ручного вызова метода Ruby сначала?
Мой файл расширения:
module Sequel
module Extensions
module StringGenerator
def some_ruby_method
DB.create_function('sql_function_name', 'SELECT 1', :returns=>:integer)
end
end
Sequel::Database.register_extension(
:string_generator,
Sequel::Extensions::StringGenerator
)
end
end
sql_function
недоступен из код без вызова some_ruby_method
вручную.
Как uuid_generate_v4
исполняется сразу после добавления в качестве расширения и что мне нужно сделать для того же результата?