読者です 読者をやめる 読者になる 読者になる

Arproxy 0.2.0でプラグインが使えるようになった

以下のプルリクがマージされてArproxy 0.2.0がリリースされ、Arproxyでプラグインが使えるようになった。

https://github.com/cookpad/arproxy/pull/6

arproxy-plugin-stdout

とりあえずサンプルプラグインを作ってみた。

https://github.com/winebarrel/arproxy-plugin-stdout

実装は以下の通り。

https://github.com/winebarrel/arproxy-plugin-stdout/blob/master/lib/arproxy/plugin/stdout.rb

module Arproxy::Plugin
  class Stdout < Arproxy::Base
    Arproxy::Plugin.register(:stdout, self)

    def execute(sql, name=nil)
      puts sql
      super(sql, name)
    end
  end
end

使い方

RailsのGemfileにarproxyとプラグインを追加。

gem 'arproxy', '~> 0.2.0'
gem 'arproxy-plugin-stdout', github: 'winebarrel/arproxy-plugin-stdout'

config/initializers/arproxy.rbプラグインをロード。

Arproxy.configure do |config|
  config.adapter = "mysql2"
  config.plugin :stdout
end
Arproxy.enable!

Railsを起動してアクセスすると標準出力にSQLが出力される。

$ bundle exec rails s
=> Booting WEBrick
=> Rails 4.2.1 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2015-05-12 00:42:34] INFO  WEBrick 1.3.1
[2015-05-12 00:42:34] INFO  ruby 2.0.0 (2014-10-27) [x86_64-darwin13.4.0]
[2015-05-12 00:42:34] INFO  WEBrick::HTTPServer#start: pid=28555 port=3000


Started GET "/items" for ::1 at 2015-05-12 00:42:37 +0900
SHOW TABLES LIKE 'schema_migrations' # ←これ
SELECT `schema_migrations`.* FROM `schema_migrations` # ←これ
  ActiveRecord::SchemaMigration Load (0.3ms)  SELECT `schema_migrations`.* FROM `schema_migrations`
SHOW FULL FIELDS FROM `schema_migrations` # ←これ
Processing by ItemsController#index as HTML
SELECT `items`.* FROM `items` # ←これ
  Item Load (0.3ms)  SELECT `items`.* FROM `items`
SHOW FULL FIELDS FROM `items` # ←これ
  Rendered items/index.html.erb within layouts/application (4.3ms)
Completed 200 OK in 300ms (Views: 288.8ms | ActiveRecord: 1.3ms)