Submit Search
Rails-Plugin Flexturesの紹介
Download as ODP, PDF
0 likes
1,220 views
baban ba-n
Rails の fixture 機能拡張gem flexturesの機能紹介
Technology
Read more
1 of 41
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
More Related Content
PPTX
サイボウズ・ラボ成果発表会
Komei Kamiya
PDF
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
PDF
Pgconf asia-201612203-pg reversi-ja
Toshi Harada
PDF
20150513 legobease
Takeshi Yamamuro
PDF
利用者主体で行う分析のための分析基盤
Sotaro Kimura
PDF
リレーショナルな正しいデータベース設計
Mikiya Okuno
PDF
データベース設計徹底指南
Mikiya Okuno
PDF
今さらながらRSpecに入門してみた
zaru sakuraba
サイボウズ・ラボ成果発表会
Komei Kamiya
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
Pgconf asia-201612203-pg reversi-ja
Toshi Harada
20150513 legobease
Takeshi Yamamuro
利用者主体で行う分析のための分析基盤
Sotaro Kimura
リレーショナルな正しいデータベース設計
Mikiya Okuno
データベース設計徹底指南
Mikiya Okuno
今さらながらRSpecに入門してみた
zaru sakuraba
Similar to Rails-Plugin Flexturesの紹介
(20)
PDF
Haikara
jewel12
PDF
地獄Spec
Drecom Co., Ltd.
PDF
地獄Spec
Tsunenori Oohara
PDF
Railsハイパー実践講座-第35回NaCl勉強会
Narihiro Nakamura
PDF
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
mametter
ODP
Fabrication
Kenichi Tachibana
PDF
こんな辛いテストはいやだ
Takuya Mikami
PPTX
R spec勉強会
Tatsunori Nishikori
PDF
Tdd
Takaya Kotohata
PDF
Red Data Tools
Kouhei Sutou
PDF
Ruby 3の型推論やってます
mametter
PPT
Rspec
Yunosuke Taga
PPT
CPANの依存モジュールをもう少し正しく検出したい
charsbar
ODP
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
PDF
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
PDF
Rubykansai 81
Satomi Tsujita
PDF
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
ODP
RSpecのここがすごい!
mitim
PDF
Rails あるある
Ryunosuke SATO
PDF
RSpec と Cucumber
Masahiro Tomita
Haikara
jewel12
地獄Spec
Drecom Co., Ltd.
地獄Spec
Tsunenori Oohara
Railsハイパー実践講座-第35回NaCl勉強会
Narihiro Nakamura
型プロファイラ:抽象解釈に基づくRuby 3の静的解析
mametter
Fabrication
Kenichi Tachibana
こんな辛いテストはいやだ
Takuya Mikami
R spec勉強会
Tatsunori Nishikori
Tdd
Takaya Kotohata
Red Data Tools
Kouhei Sutou
Ruby 3の型推論やってます
mametter
Rspec
Yunosuke Taga
CPANの依存モジュールをもう少し正しく検出したい
charsbar
kpfx07 LT ruby-processingでイケメンになりたい
koki_h
Ruby初級者向けレッスン 第46回 ─── Test::Unit
higaki
Rubykansai 81
Satomi Tsujita
Hypermedia: The Missing Element to Building Adaptable Web APIs in Rails (増補日本語版)
Toru Kawamura
RSpecのここがすごい!
mitim
Rails あるある
Ryunosuke SATO
RSpec と Cucumber
Masahiro Tomita
Ad
More from baban ba-n
(12)
ODP
Typusとadministrateを比較してみよう
baban ba-n
ODP
Typusと付き合ってきた話
baban ba-n
ODP
ハッカソン。来た、見た、負けた! Spajam2016仙台予選
baban ba-n
ODP
ガラホ、なるものに対応してきた
baban ba-n
ODP
Minitest調べてみた
baban ba-n
ODP
人工言語ロジバン超入門編
baban ba-n
ODP
普通のエンジニアが【ロジバン】やってみた
baban ba-n
ODP
プログラミング言語Cyanの紹介
baban ba-n
ODP
Rubyのコードを読んでみよう(オブジェクト編)
baban ba-n
ODP
Rubyのソースコードを読んでみよう(入門編)
baban ba-n
ODP
rails 管理画面作成gem Typus解説
baban ba-n
PDF
名前重要 超重要
baban ba-n
Typusとadministrateを比較してみよう
baban ba-n
Typusと付き合ってきた話
baban ba-n
ハッカソン。来た、見た、負けた! Spajam2016仙台予選
baban ba-n
ガラホ、なるものに対応してきた
baban ba-n
Minitest調べてみた
baban ba-n
人工言語ロジバン超入門編
baban ba-n
普通のエンジニアが【ロジバン】やってみた
baban ba-n
プログラミング言語Cyanの紹介
baban ba-n
Rubyのコードを読んでみよう(オブジェクト編)
baban ba-n
Rubyのソースコードを読んでみよう(入門編)
baban ba-n
rails 管理画面作成gem Typus解説
baban ba-n
名前重要 超重要
baban ba-n
Ad
Rails-Plugin Flexturesの紹介
1.
Rails Plug-in Flextures
の使い方
2.
ところで Rails でテストデータ取り込むアレ fixtures って
" クソ " ですよね♪
3.
実例その1:案件 A Test::Unit 使用 データ
fixture 作成 データは csv で作成 開発は順調に進行していたが…
4.
さーて、基本機能できたし そろそろ同値クラステストや境界値テストの
フェーズに移りますか ( リリース1ヶ月前 )
5.
Fixture の欠点 1 1
テーブルにつき1ファイルしか用意できない 同値クラステストや境界値テスト仕様とする 頃には、依存関係の塊でそれどころではない
6.
さらに開発は進むが…
7.
えっ?、登録から3日以内のユーザーには
1日1回アイテム付与?
8.
Fixture の欠点 2 基本的にデータが静的 日時チェックのテストあたりはテストするな
と言われているようなもの… (YAML は erb 使えるのである程度回避できますけどね)
9.
案件 B RSpec でテスト Fixture
はマスターデータは CSV それ以外は yaml
10.
Fixture の欠点 YAML で作れば
erb が使えるけど活躍できる舞 台はなかった 関連を生成してくれる機能があるけど、特に 書きやすいものでもない ( 書式が面倒 ) 総論としては大体の場合は csv の方が便利
11.
案件 C Rspec FactoryGirl これで全ての問題は解決したかに見えたが…
12.
現実 : 開発の遅延 開発初期には1日に2,3回は
migration が走 る migration するたびに、作った Factory がしば しば止まる データの不整合が起こるたびに factories.rb を 修正 テストできない状況では作業できないの で、”待ち”が発生する
13.
FactoryGirl の欠点 データ1件の生成、修正コストは yaml
以上に 高い テーブルの構成が変わった時のコストも高い 実は hatbm のテーブルって全テーブルの 1 割と かで旨みが少ない
14.
という感じの募り募った”恨”が今回の
gem 作成のきっかけ
15.
総論 どの方法をとってもテーブルの migration がか
かったあとのデータの修正コストがすごい ( 初期開発ではテーブルの構成変更がよくある のでこれは痛い ) 柔軟な方法ほど記法が致命的に長くなって途 中でわけがわからなくなる… ( そしてだんだんデータの維持管理ができなく なる )
16.
解決策 データの一覧性、編集しやすさは csv は一番高
い 動的性質に関しては FactoryGirl が群を抜いて いる 両方の機能のイイトコ取りをしつつ、これま での問題の解決法を組み込んで行けばいいは ず…
17.
機能その 1 データのお手軽ダンプ rake db:flextures:dump rake
db:flextutes:load 実は csv をお手軽ダンプできるものは無かった (YAML はある )
18.
機能その2 カラムの変更点を検知して値を自動補完する 1つか2つカラムが増減しても、よく変わる 部分のカラムは設計上重要では無いのでエ ラーが出ても開発を完全停止させないほうが
いい
19.
RSpec で使用可能 同じ書式で使える fixtures :users flextures
:users 読み込むファイルを切り替え可能 flextures :users => "login_test/users"
20.
FaftoryFilter FactoryGirl 風の書式でデータを動的に変更可
能 Flextures::Factory.define :users do |f| f.last_login_date = Time.now end ( 実は ActiveRecord のモデルをもらっているの で、 AcitiveRecord で可能は事はここででき る)
21.
Case1: テストデータの生成
( 実演含 )
22.
想定させる使い方 ソーシャルゲームを仮定して users テーブルを
作成
23.
データ生成:その 2 10 人分のデータを生成したいので、
1 〜 10 で id だけを生成して csv ファイルを作成 ( デフォルトは spec/fixtures/users.csv)
24.
データ生成:その 1 「 config/flextures.factory.rb
」にフィルタを記 述する。今回は faker を使ってデータを生成
25.
データ生成:その 3 もう一度「 rake
db:flextures:dump F=users 」を 実行してデータをダンプ
26.
Case2: 本番環境データの取り込み
27.
検証環境のデータを取り込み 検証環境で携帯を使いながら操作していると 戦闘で、バグらしき挙動を発見 関係するテーブルのデータを吐き出し rake
db:flextures:dump T=users,items,battle_log これを開発環境の spec/fixtures/battle 以下に移 動
28.
検証環境のデータを取り込み 持ってきたデータを spec/fixtures/battle 以下に
移動させて rake db:flextures:load DIR=battle DB に検証環境のデータを取り込まれたので rails console でコンソールを起動して周辺の コードを試し打ちしたり ruby-debugger でブ レークポイントを貼ったりしてバグ探し
29.
検証環境のデータを取り込み 原因がわかったら spec にバグを再現するテス
トを作成 データの切り替えは RSpec 中で以下の様に記 述 flextures :users => "battle/users", :items=>"battle/items", :battle_log => "battle/battle_log" 検証環境のデータを " そのまま " 持ってきて テストケースとして使用可能
30.
最大の利点 テスト用のデータと開発環境で使うデータを 同じ場所で管理できる rails
colsole で実行できるデータが rspec と同じ
31.
Case3: 画像のとり込み
32.
画像の DB 取り込み CSV
ファイルの作成 content に画像が入る public/images/db/ 以下に 0001 〜 0005.jpg を設 置
33.
画像の DB への読み込み さっきと同じで
flextures.factory.rb を作成 あとは rake db:flextures:load T=upload_images で画像をロード
34.
現在の欠点 安定性 !! (バグが眠っている) 特に
DB のデータをリセットするタイミングが まだ確定できていない Rspec で before(:all) を使ったところが転ぶ Rails3.2 の場合警告メッセージが出る etc...
35.
現在の欠点2 FactoryFilter への機能集中 (
1テーブル1個し かフィルタを持てない) 一応ファイル名を取得したり対処法はあるけ ど、まだまだ研究不足
36.
あと、まとめ 別に fixtures でのデータ読み込みとかは
dis っ ていない(読み込み速度でかなわない ) FactoryGirl も混ぜて使える(柔軟性ではこち らが上 )
37.
まとめ 綺麗に適応する必要はない DB のデータを csv
でダンプする目的だけで 使ってもよし テスト用のデータを大量生成するために使っ てもよし RSpec で fixture を切り替えるためだけに使っ てもよし
38.
とまぁ色々言いましたが
39.
Gemfile に「 gem
"flextures" 」して bundle install するだけなので、とりあえず使ってみて ください (CSV 吐き出しだけしたいなら、オススメは 1.0.6)
40.
Gemfile に「 gem
"flextures" 」して bundle install するだけなので、とりあえず使ってみて ください
41.
ありがとうございました
Download