Enviar búsqueda
Cargar
Predefを使ったsqlのトレース
•
7 recomendaciones
•
7,786 vistas
悠滋 山本
Seguir
Module#prependのショートカット、Predefを使ってデバッグや、アプリケーションで使用されるSQLの解析に役立てるほう法を紹介します。
Leer menos
Leer más
Software
Denunciar
Compartir
Denunciar
Compartir
1 de 18
Descargar ahora
Descargar para leer sin conexión
Recomendados
Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回
Mitsuru Mutaguchi
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
JavaScript MVC入門
JavaScript MVC入門
大樹 小倉
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Database.persistentの話
Database.persistentの話
真一 北原
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Rspec
Rspec
Yunosuke Taga
Recomendados
Netcommonsアドオンモジュールセミナー第7回
Netcommonsアドオンモジュールセミナー第7回
Mitsuru Mutaguchi
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
Phpのレガシーコードをrubyで焼き変えてみた
Phpのレガシーコードをrubyで焼き変えてみた
Akira Kaneda
JavaScript MVC入門
JavaScript MVC入門
大樹 小倉
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
Database.persistentの話
Database.persistentの話
真一 北原
メタプログラミングって何だろう
メタプログラミングって何だろう
Kota Mizushima
Rspec
Rspec
Yunosuke Taga
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
Keiichi Hagiwara
Js async
Js async
Shunji Makino
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
Programming camp 2010 debug hacks
Programming camp 2010 debug hacks
Hiro Yoshioka
Javaに這いよる.NET
Javaに這いよる.NET
Hiroshi Maekawa
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
つぶLT20121215
つぶLT20121215
遼一 杉浦
わかる LT@2
わかる LT@2
Shingo Inoue
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会
Narihiro Nakamura
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
Toshi Harada
Compare Japanese Fonts
Compare Japanese Fonts
Yasunobu Okamura
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
Hiro Yoshioka
わんくま東京#49 LT 「DynamicQuery ~MSDN サンプルの逆襲~」
わんくま東京#49 LT 「DynamicQuery ~MSDN サンプルの逆襲~」
Takeshi Kiriya
Java屋な僕がFuelPHPを使ってみた
Java屋な僕がFuelPHPを使ってみた
Manabu Yamamoto
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
disc99_
カジュアルにセキュリティテストはじめよう #qpstudy
カジュアルにセキュリティテストはじめよう #qpstudy
Masahiro NAKAYAMA
カジュアルにセキュリティテストはじめよう
カジュアルにセキュリティテストはじめよう
Masahiro NAKAYAMA
Java script関数コールの追跡
Java script関数コールの追跡
Keiichi Kobayashi
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
yhara
Más contenido relacionado
La actualidad más candente
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
Yu Nobuoka
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
Keiichi Hagiwara
Js async
Js async
Shunji Makino
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Kazuhide Maruyama
Programming camp 2010 debug hacks
Programming camp 2010 debug hacks
Hiro Yoshioka
Javaに這いよる.NET
Javaに這いよる.NET
Hiroshi Maekawa
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
つぶLT20121215
つぶLT20121215
遼一 杉浦
わかる LT@2
わかる LT@2
Shingo Inoue
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会
Narihiro Nakamura
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
Toshi Harada
Compare Japanese Fonts
Compare Japanese Fonts
Yasunobu Okamura
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
Hiro Yoshioka
わんくま東京#49 LT 「DynamicQuery ~MSDN サンプルの逆襲~」
わんくま東京#49 LT 「DynamicQuery ~MSDN サンプルの逆襲~」
Takeshi Kiriya
Java屋な僕がFuelPHPを使ってみた
Java屋な僕がFuelPHPを使ってみた
Manabu Yamamoto
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
disc99_
カジュアルにセキュリティテストはじめよう #qpstudy
カジュアルにセキュリティテストはじめよう #qpstudy
Masahiro NAKAYAMA
カジュアルにセキュリティテストはじめよう
カジュアルにセキュリティテストはじめよう
Masahiro NAKAYAMA
Java script関数コールの追跡
Java script関数コールの追跡
Keiichi Kobayashi
La actualidad más candente
(20)
TypeScript 言語処理系ことはじめ
TypeScript 言語処理系ことはじめ
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
あるあるLT〜サーバーサイドエンジニア〜 Vol.3
Js async
Js async
Typescriptの中のこと(浅め)
Typescriptの中のこと(浅め)
Programming camp 2010 debug hacks
Programming camp 2010 debug hacks
Javaに這いよる.NET
Javaに這いよる.NET
Web技術勉強会 第33回
Web技術勉強会 第33回
つぶLT20121215
つぶLT20121215
わかる LT@2
わかる LT@2
Railsハイパー実践講座-第35回NaCl勉強会
Railsハイパー実践講座-第35回NaCl勉強会
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
Compare Japanese Fonts
Compare Japanese Fonts
Hashicorpツールズ
Hashicorpツールズ
Debug Hacks at Security and Programming camp 2011
Debug Hacks at Security and Programming camp 2011
わんくま東京#49 LT 「DynamicQuery ~MSDN サンプルの逆襲~」
わんくま東京#49 LT 「DynamicQuery ~MSDN サンプルの逆襲~」
Java屋な僕がFuelPHPを使ってみた
Java屋な僕がFuelPHPを使ってみた
JavaのテストGroovyでいいのではないかという話
JavaのテストGroovyでいいのではないかという話
カジュアルにセキュリティテストはじめよう #qpstudy
カジュアルにセキュリティテストはじめよう #qpstudy
カジュアルにセキュリティテストはじめよう
カジュアルにセキュリティテストはじめよう
Java script関数コールの追跡
Java script関数コールの追跡
Similar a Predefを使ったsqlのトレース
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
yhara
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
infinite_loop
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Ransui Iso
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Ra Zon
Tdd
Tdd
Takaya Kotohata
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Taisuke Shiratori
Start!! Ruby
Start!! Ruby
mitim
From Java To Clojure
From Java To Clojure
Kent Ohashi
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
Web技術勉強会 第31回
Web技術勉強会 第31回
龍一 田中
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Ransui Iso
Proof and Emacs
Proof and Emacs
dico_leque
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Shin Sekaryo
Trait in scala
Trait in scala
Yuta Shimakawa
第1回勉強会スライド
第1回勉強会スライド
koturn 0;
20110820 metaprogramming
20110820 metaprogramming
Masanori Kado
クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017
Motohiro Ueki
若気の至りを精算する
若気の至りを精算する
Kenji Daikoku
Similar a Predefを使ったsqlのトレース
(20)
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Javascriptで無限ループを実現する5つの方法
Javascriptで無限ループを実現する5つの方法
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
大規模ソーシャルゲームを支える技術~PHP+MySQLを使った高負荷対策~
Lisp Tutorial for Pythonista Day 6
Lisp Tutorial for Pythonista Day 6
Scalaで萌える関数型プログラミング[完全版]
Scalaで萌える関数型プログラミング[完全版]
Tdd
Tdd
Beginners Scala in FAN 20121009
Beginners Scala in FAN 20121009
Start!! Ruby
Start!! Ruby
From Java To Clojure
From Java To Clojure
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
Web技術勉強会 第31回
Web技術勉強会 第31回
Scalaで萌える関数型プログラミング[1.1.RC1]
Scalaで萌える関数型プログラミング[1.1.RC1]
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
Proof and Emacs
Proof and Emacs
ES6,7で書ける JavaScript
ES6,7で書ける JavaScript
Trait in scala
Trait in scala
第1回勉強会スライド
第1回勉強会スライド
20110820 metaprogramming
20110820 metaprogramming
クイズ・Python勝ち抜きバトル pycon jp_2017
クイズ・Python勝ち抜きバトル pycon jp_2017
若気の至りを精算する
若気の至りを精算する
Más de 悠滋 山本
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
悠滋 山本
Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)
悠滋 山本
Whom to Recommend Elm to?
Whom to Recommend Elm to?
悠滋 山本
いつもどおりのテンションでしゃべるEightの怪談
いつもどおりのテンションでしゃべるEightの怪談
悠滋 山本
Monad as things to do
Monad as things to do
悠滋 山本
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
悠滋 山本
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
悠滋 山本
Más de 悠滋 山本
(7)
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Haskell-jpらしさって︖ 「⽬的」と「活動」のすべてを解説︕ 【プログラミング⾔語コミュニティーとしての Haskell-jp】
Introduction to stack's docker integration (1)
Introduction to stack's docker integration (1)
Whom to Recommend Elm to?
Whom to Recommend Elm to?
いつもどおりのテンションでしゃべるEightの怪談
いつもどおりのテンションでしゃべるEightの怪談
Monad as things to do
Monad as things to do
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
Monadなんてどうってことなかった話 - Monadなんてただの型クラス!
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
2014 05-11-関数型lt大会-「やらなければならないこと」としてのhaskellのmonad
Predefを使ったsqlのトレース
1.
Predefを使ったSQLのトレース 山本悠滋 2015-06-04 表参道.rb #1
2.
こんにちは! 山本悠滋(@igrep) 26歳♂ Eightのサーバーサイド担当です。 最近はCoffeeScriptでクライアントをよく触ります。 Haskellの勉強会を毎月やっとります。
3.
小さな小さなgemを作りました predefと言います
4.
小さな小さなgemを作りました 使ったことある人ー ( ^ω^)ノ
5.
小さな小さなgemを作りました リリースまだですけどwww => しました! predef
6.
なにするgem? 「Module#prependしてdefするgem」略して「predef」 ただのModule#prependのショートカット
7.
なにするgem? 例えば... class SomeExternalClass def method_you_know(*args) ... end end ↑みたいな(外部のライブラリなど、直接触りづらい)クラ スがあったとして
8.
なにするgem? 例えば... Predef.predef SomeExternalClass, :method_you_know
do|*args| p args super(*args) end ↑みたいにすると 対象のメソッドの前後に好きな処理を加えられちゃう♪ この場合、引数を出力する処理を加えちゃう♪
9.
なにするgem? やってることは実質これ↓と同じ module Wrapper def method_you_know
*args p args super(*args) end end class SomeExternalClass prepend Wrapper end 詳しくはprependでググってください。
10.
なにするgem? 余計なmoduleを定義しなくて済む ただそれだけなんで別に無理に使う必要もない
11.
事例 アプリ上で発行されうる全てのSQLと、その場所を把握した い ActiveRecord任せのためどこでどんなクエリを発行するか 分かりにくくなりがち ただし、SELECT・DELETE・UPDATEのみ。 INSERTやその他DDLなどはテストでだけ実行されるケース が多い。 あと、要件上あまり関心がなかった。
12.
事例 アプリ上で発行されうる全てのSQLと、その場所を把握した い Mysql2::Client#queryメソッドをラップした上で、全テスト を実行 最終的にActiveRecordが実行するはずなので、漏れがない ラップしたqueryメソッドで受け取った引数と、バックトレース をログに出す カバレッジもとり、カバーできてない分のみコードを読む
13.
事例 アプリ上で発行されうる全てのSQLと、その場所を把握した い こんな感じ... Predef.predef Mysql2::Client, :query
do|sql| if sql =~ /SELECT|UPDATE|DELETE/ puts sql pp caller end super(sql) # 引数を忘れずに end
14.
事例 アプリ上で発行されうる全てのSQLと、その場所を把握した い で、こんな感じの出力が! SELECT * from
your_apps_table WHERE ... ["/path/to/your_app/app/models/foo.rb:355:in `some_method_in_model'", ...]
15.
Tips Refinementsも用意してます 使い方 using Predef::Refinements Mysql2::Client.predef :query
do|sql| ... end
16.
まとめ(みなさん向け) $ gem install
predef
17.
まとめ(みなさん向け) require 'predef' using Predef::Refinements Mysql2::Client.predef
:query do|sql| puts sql if sql =~ /.../ super(sql) end
18.
まとめ(私向け) さっさと bundle exec
rake release しなさい。 こちらも終了: predef
Descargar ahora