Enviar búsqueda
Cargar
Rails-Plugin Flexturesの紹介
•
0 recomendaciones
•
1,218 vistas
baban ba-n
Seguir
Rails の fixture 機能拡張gem flexturesの機能紹介
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 41
Descargar ahora
Descargar para leer sin conexión
Recomendados
サイボウズ・ラボ成果発表会
サイボウズ・ラボ成果発表会
Komei Kamiya
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
Yahoo!デベロッパーネットワーク
Pgconf asia-201612203-pg reversi-ja
Pgconf asia-201612203-pg reversi-ja
Toshi Harada
20150513 legobease
20150513 legobease
Takeshi Yamamuro
利用者主体で行う分析のための分析基盤
利用者主体で行う分析のための分析基盤
Sotaro Kimura
リレーショナルな正しいデータベース設計
リレーショナルな正しいデータベース設計
Mikiya Okuno
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
Tdd
Tdd
Takaya Kotohata
Más contenido relacionado
Similar a Rails-Plugin Flexturesの紹介
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Kazuyuki Miyake
120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり
Takayoshi Tanaka
HBaseCon 2012 参加レポート
HBaseCon 2012 参加レポート
NTT DATA OSS Professional Services
Opencv object detection_takmin
Opencv object detection_takmin
Takuya Minagawa
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
Goh Matsumoto
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
devsumi2009
BPStudy20121221
BPStudy20121221
Shinichiro Takezaki
ASP.NET vNextの全貌
ASP.NET vNextの全貌
A AOKI
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Shintaro Fukushima
Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築
伊藤 祐策
Nginx
Nginx
Soichi Takamura
Elastic7.12 release-new-features-on-0428
Elastic7.12 release-new-features-on-0428
Shotaro Suzuki
Tokyo r28 1
Tokyo r28 1
Takashi Minoda
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
Microsoft Tech Summit 2017
Google App Engineとその影響(補足)
Google App Engineとその影響(補足)
なおき きしだ
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
Taiji Miyabe
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
Daiyu Hatakeyama
Vertica 8.1.1(8.1 SP1) 新機能
Vertica 8.1.1(8.1 SP1) 新機能
Kaito Tono
DOO-013_Docker 最新動向と Azure Container Service 入門
DOO-013_Docker 最新動向と Azure Container Service 入門
decode2016
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
Yohei Sasaki
Similar a Rails-Plugin Flexturesの紹介
(20)
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
120331 silverlight5新機能早めぐり
120331 silverlight5新機能早めぐり
HBaseCon 2012 参加レポート
HBaseCon 2012 参加レポート
Opencv object detection_takmin
Opencv object detection_takmin
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
【12-A-2】 ケーススタディ:不景気と戦うシステムインテグレート
BPStudy20121221
BPStudy20121221
ASP.NET vNextの全貌
ASP.NET vNextの全貌
mmapパッケージを使ってお手軽オブジェクト管理
mmapパッケージを使ってお手軽オブジェクト管理
Lv1から始めるWebサービスのインフラ構築
Lv1から始めるWebサービスのインフラ構築
Nginx
Nginx
Elastic7.12 release-new-features-on-0428
Elastic7.12 release-new-features-on-0428
Tokyo r28 1
Tokyo r28 1
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
Google App Engineとその影響(補足)
Google App Engineとその影響(補足)
Java fx勉強会lt 第8回
Java fx勉強会lt 第8回
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
2020/11/19 Global AI on Tour - Toyama プログラマーのための機械学習入門
Vertica 8.1.1(8.1 SP1) 新機能
Vertica 8.1.1(8.1 SP1) 新機能
DOO-013_Docker 最新動向と Azure Container Service 入門
DOO-013_Docker 最新動向と Azure Container Service 入門
Couch Db勉強会0623 by yssk22
Couch Db勉強会0623 by yssk22
Más de baban ba-n
Typusとadministrateを比較してみよう
Typusとadministrateを比較してみよう
baban ba-n
Typusと付き合ってきた話
Typusと付き合ってきた話
baban ba-n
ハッカソン。来た、見た、負けた! Spajam2016仙台予選
ハッカソン。来た、見た、負けた! Spajam2016仙台予選
baban ba-n
ガラホ、なるものに対応してきた
ガラホ、なるものに対応してきた
baban ba-n
Minitest調べてみた
Minitest調べてみた
baban ba-n
人工言語ロジバン超入門編
人工言語ロジバン超入門編
baban ba-n
普通のエンジニアが【ロジバン】やってみた
普通のエンジニアが【ロジバン】やってみた
baban ba-n
プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介
baban ba-n
Rubyのコードを読んでみよう(オブジェクト編)
Rubyのコードを読んでみよう(オブジェクト編)
baban ba-n
Rubyのソースコードを読んでみよう(入門編)
Rubyのソースコードを読んでみよう(入門編)
baban ba-n
rails 管理画面作成gem Typus解説
rails 管理画面作成gem Typus解説
baban ba-n
名前重要 超重要
名前重要 超重要
baban ba-n
Más de baban ba-n
(12)
Typusとadministrateを比較してみよう
Typusとadministrateを比較してみよう
Typusと付き合ってきた話
Typusと付き合ってきた話
ハッカソン。来た、見た、負けた! Spajam2016仙台予選
ハッカソン。来た、見た、負けた! Spajam2016仙台予選
ガラホ、なるものに対応してきた
ガラホ、なるものに対応してきた
Minitest調べてみた
Minitest調べてみた
人工言語ロジバン超入門編
人工言語ロジバン超入門編
普通のエンジニアが【ロジバン】やってみた
普通のエンジニアが【ロジバン】やってみた
プログラミング言語Cyanの紹介
プログラミング言語Cyanの紹介
Rubyのコードを読んでみよう(オブジェクト編)
Rubyのコードを読んでみよう(オブジェクト編)
Rubyのソースコードを読んでみよう(入門編)
Rubyのソースコードを読んでみよう(入門編)
rails 管理画面作成gem Typus解説
rails 管理画面作成gem Typus解説
名前重要 超重要
名前重要 超重要
Último
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
Sadao Tokuyama
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
2024 03 CTEA
2024 03 CTEA
arts yokohama
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
Último
(12)
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
2024 03 CTEA
2024 03 CTEA
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
2024 04 minnanoito
2024 04 minnanoito
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
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.
ありがとうございました
Descargar ahora