rake コマンドのdb:create
後に postgresql インストール スクリプトを実行できれば素晴らしいと思います。たとえば、これ。(postgres ユーザーとして実行する必要があります):
CREATE EXTENSION "fuzzystrmatch";
これは、現時点では、データベースを作成するたびに手動で行っているためです。
ヒントはありますか?
rake コマンドのdb:create
後に postgresql インストール スクリプトを実行できれば素晴らしいと思います。たとえば、これ。(postgres ユーザーとして実行する必要があります):
CREATE EXTENSION "fuzzystrmatch";
これは、現時点では、データベースを作成するたびに手動で行っているためです。
ヒントはありますか?
移行でこれを行うだけです
class AddCryptoToDb < ActiveRecord::Migration
def up
execute <<-SQL
CREATE extension IF NOT EXISTS pgcrypto;
SQL
end
end
そこで必要なSQLを実行できます。私も関数のためにそれをします
class BuildFnSetWebUsersUid < ActiveRecord::Migration
def up
say "building fn_set_web_users_uid function"
execute <<-SQL
CREATE OR REPLACE FUNCTION fn_set_web_users_uid()
RETURNS trigger AS
$BODY$
BEGIN
IF NEW.uid IS NULL THEN
SELECT UID into NEW.uid
FROM generate_series(10000, (SELECT last_value FROM web_users_uid_seq)) AS s(uid)
EXCEPT
SELECT uid FROM web_users
ORDER BY uid;
IF NEW.uid is NULL THEN
SELECT nextval('web_users_uid_seq') INTO NEW.uid;
END IF;
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE 'plpgsql';
SQL
end
def down
execute "DROP FUNCTION IF EXISTS fn_set_web_users_uid;"
end
end
また、拡張子によっては、スーパーユーザーまたはデータベース所有者である必要があるため、postgres ユーザーである必要はありません。そのため、私の開発ボックスでは、使いやすさのためにユーザーにスーパー ユーザー権限を与えています。
rake タスクを作成するか (かなり簡単です)、template1 データベースをいじることができます (推奨されませんが、可能です):
http://www.postgresql.org/docs/9.2/static/manage-ag-templatedbs.html