Rails DB関連の便利な設定


Ruby on Rails(Active Record)を使う中で便利な設定をいくつか紹介します。

👽 schema情報をSQLで表現する

config.active_record.schema_format = :sqlとすると、スキーマ情報がschema.rbからstructure.sqlに変更されます。structure.sqlはSQLベースで表現され、複合プライマリキー等が詳細にダンプされます。

config/application.rbに次のように記述します。

# DBのスキーマ情報をSQLで表現
config.active_record.schema_format = :sql

🐮 statment_timeout:SQLのタイムアウトを管理

PostgreSQLではSQLのクエリ実行時間にタイムアウトを設定できます。database.ymlstatement_timeoutを記述します。

production:
url: <%= DATABASE_URL %>
variables:
statement_timeout: 5000

重い処理をActive Jobでのみ許可することもできます。

class MyAnalyticsJob < ActiveJob::Base
queue_as :analytics
def perform
ActiveRecord::Base.connection.execute “SET statement_timeout = 600000# 10分
# ...
ensure
ActiveRecord::Base.connection.execute “SET statement_timeout = 5000# 5秒
end
end

🐰 参考リンク

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)