{"id":21919389,"url":"https://github.com/baban/flextures","last_synced_at":"2025-04-19T12:27:47.719Z","repository":{"id":1778196,"uuid":"2700922","full_name":"baban/flextures","owner":"baban","description":"This plug-in can load and dump test data in databases, loading function is very flexible, dump function is very simple","archived":false,"fork":false,"pushed_at":"2023-11-26T08:50:15.000Z","size":307,"stargazers_count":22,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-31T15:15:50.586Z","etag":null,"topics":["csv","csv-export","csv-import","fixtures","rails","ruby","yaml","yaml-export","yaml-import"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/baban.png","metadata":{"files":{"readme":"README.ja.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-11-03T08:58:42.000Z","updated_at":"2023-10-20T09:45:07.000Z","dependencies_parsed_at":"2022-09-09T01:00:44.570Z","dependency_job_id":null,"html_url":"https://github.com/baban/flextures","commit_stats":null,"previous_names":[],"tags_count":44,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baban%2Fflextures","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baban%2Fflextures/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baban%2Fflextures/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/baban%2Fflextures/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/baban","download_url":"https://codeload.github.com/baban/flextures/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226741502,"owners_count":17674519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv","csv-export","csv-import","fixtures","rails","ruby","yaml","yaml-export","yaml-import"],"created_at":"2024-11-28T20:06:58.164Z","updated_at":"2024-11-28T20:06:58.890Z","avatar_url":"https://github.com/baban.png","language":"Ruby","readme":"# flextures\n\n* [ENGLISH DOCUMENT](https://github.com/baban/flextures/blob/master/README.md)\n\n![Ruby 2.3 higher](https://img.shields.io/badge/ruby-v2.3-red.svg)\n![Rails 4.2 higher](https://img.shields.io/badge/rails-v4.2-red.svg)\n![MIT Licence](https://img.shields.io/badge/licence-MIT-blue.svg)\n\n## 要約\n\nこのplug-inは、これまで開発中で溜まっていた Rails標準のfixtureの不満点を解消するために作成しました。\n基本的な操作は単純で次のコマンドで、それぞれfixtureのロードとダンプを行います。\n\n```\nrake db:flextures:load\nrake db:flextures:dump\n```\n\nまた、rspecやminitest中でテストデータを読み込むのにも使用できます。\n\n```ruby\ndescribe ItemShopController do\n  flextures :users, :items\nend\n```\n\n通常のfixtureとの主な違いは次の４点です。\n\n1. yamlよりもcsvを優先する\n2. migrationでテーブル構成が変わっても、カラムの変更点を無視、補完してロードを行う\n3. テーブル名とfixtureのファイル名を一致させないでも、自由なロード＆ダンプが出来るオプション\n4. FactoyGirl風の読み込みフィルタで、Fixtureのデータを加工しながら読み込む事が出来る\n\n\u003ca name=\"table_of_contents\"\u003e\u003c/a\u003e\n## 目次\n\n* [必要条件](#requirements)\n* [使い方](#usage)\n  * [インストール方法](#how_to_install)\n  * [rakeコマンドでの呼び出し方](#commandline_support)\n  * [ユニットテストでの使い方](#unittest_support)\n  * [読み込み・書き出しフィルター](#flextures_filter)\n  * [設定ファイル](#configuration)\n* [貢献](#contributing)\n* [ライセンス](#licence)\n\n\u003ca name=\"requirements\"\u003e\u003c/a\u003e\n## 必要条件\n\n* ruby2.3以上\n\n\u003ca name=\"usage\"\u003e\u003c/a\u003e\n## 使い方\n\n\u003ca name=\"how_to_install\"\u003e\u003c/a\u003e\n### インストール方法\n\nRailsのPlug-inとして使われることを想定しています\ngem化されているので、bundlerで次のように記述して、普通にbundle install してください\n\n```\n gem \"flextures\"\n```\n\n```\nbundle install\nbundle exec rails generate flextures:initializer\n```\n\n\u003ca name=\"commandline_support\"\u003e\u003c/a\u003e\n### rakeコマンド\n\n次のコマンドで spec/fixtures/ 以下にあるfixtureのロード＆ダンプを行います\n(読み込む基本のディレクトリは設定ファイルで変更可能)\n\n```\nrake db:flextures:load\nrake db:flextures:dump\n```\n\nrake コマンドには以下の様な書式でオプションを指定することができます\n指摘出来るオプションは、ロードとダンプで共通です\n\nテーブル名で吐き出し(Userモデルusers)\n\n```\nrake db:flextures:dump TABLE=users\n```\n\nUsersモデルのfixture(users.csvか　users.yml)をロードする\n\n```\nrake db:flextures:load MODEL=User\n```\n\nその他オプションは以下の通りです:\n\n| オプション | 役割                                                              |\n------------|--------------------------------------------------------------------\n| TABLE     | テーブル名を指定してロード。テーブル名はカンマ切りで複数指定が可能        |\n| MODEL     | モデル名を指定してロード。モデル名はカンマ区切りで複数指定が可能          |\n| DIR       | フィクスチャをロード＆ダンプするディレクトリを指定する                   |\n| FILE      | loadまたはdumpするファイル名を直接指定(Userモデルのusers.csv以外を指定) |\n| FORMAT    | ダンプ、またはロードするデータの種類を指定できる(csvかyml)              |\n| OPTION    | その他の細かい読み込みオプションはここで指定出来ます                     |\n| T         | TABLEのエイリアス                                                   |\n| D         | ディレクトリ指定のエイリアス                                          |\n| F         | ファイル名指定のエイリアス                                            |\n\nmigration等でテーブルの構成が変わった時には\ngenerateコマンドを実行すると、テーブル情報のloadとdumpをセットで行なってくれるので便利です\n\n```\nrake db:flextures:generate T=users\n```\n\nさらに詳しい説明に関しては [Wiki:Rakeコマンドラインオプション](https://github.com/baban/flextures/wiki/Rake%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%AA%E3%83%97%E3%82%B7%E3%83%A7%E3%83%B3)を参照して下さい\n\n\u003ca name=\"unittest_support\"\u003e\u003c/a\u003e\n### ユニットテストでの使い方\n\nユニットテスト中でデータの読み込みが行いたくなったときのために\nfixtureのロード機能を使えます\n\n次の例はRSpecからの読み込みですが\n基本的な機能は、通常のfixturesと同じですので、fixtures と同じ感覚で使用して下さい\n\n```ruby\ndescribe ItemShopController do\n  flextures :users, :items\nend\n```\n\n基本的な違いは、yamlよりcsvを優先する、カラムの変更点を検知して警告を出しながらもロードを行う等ですが\nもう一つ、ハッシュ引数で指定する事で、テーブル名、ファイル名を一致させなくても フィクスチャ を読み込ませることができます\nそのため、すべてのテストケースで依存関係を気にしながら共通のfixtureを使わなくても良い様に出来ます\n\n```ruby\ndescribe ItemShopController do\n  flextures :items, :users =\u003e :users_for_itemshop # users_for_itemshop.csv をロードする\nend\n```\n\nその他現在はShouldからの呼び出しや様々なオプションを載せていますが\nさらに詳しい使い方に関しては [Wiki:Unit Test Supportの説明](https://github.com/baban/flextures/wiki/Unit-test-support%E3%81%AE%E8%AA%AC%E6%98%8E) を参照して下さい\n\n\u003ca name=\"flextures_filter\"\u003e\u003c/a\u003e\n### 読み込み・書き出しフィルター\n\n#### 読み込みフィルター\n\nRailsのプロジェクトに `config/flextures.factory.rb` というファイルを作成して、そこにフィルタを記述することによって\nフィクスチャの読み込み時に、値を加工して読み込む事が可能になっています\n例えば、次の様に記述するとusersテーブルのlast_login_dateの値を、常に現在の時間として設定できます\n\n```ruby\nFlextures::Factory.define :users do |f|\n  f.last_login_date = DateTime.now\nend\n```\n\nテーブルにdefaultの値を設定していなくても\nカラムのデータを適当に補完する機能があるので\n大量のデータを生成したい時は次のように[faker](https://github.com/stympy/faker)等と組み合わせて\n必要な分だけ生成をさせると、今までより若干捗るかもしれません\n\n```ruby\nrequire 'faker'\nFlextures::Factory.define :users do |f|\n  f.name= Faker::Name.name if !f.name  # ランダムで名前を生成(ただしUS仕様\n  f.sex= [0,1].shuffle.first if !f.sex # 性別を設定\n  # Factory Girlの様にhas_manyな感じのデータも生成できます。（初期設定でアイテムを２個持たせる）\n  f.items\u003c\u003c [ Item.new( master_item_id: 1, count: 5 ), Item.new( master_item_id: 2, count: 3 ) ]\nend\n```\n\n* [wiki:has_manyな感じのデータの精製法](https://github.com/baban/flextures/wiki/Has-many%E3%81%AA%E6%84%9F%E3%81%98%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E7%B2%BE%E8%A3%BD%E6%96%B9%E6%B3%95)\n\n#### 書き出しフィルター\n\nデータのdump時に加工が必要になった時には、同じく`config/flextures.factory.rb`に\nテーブル名と、加工したい値をキーに、処理をラムダで渡してやることで可能です\n\n```ruby\nFlextures::DumpFilter.define :users, {\n  :encrypted_password =\u003e lambda { |v| Base64.encode64(v) }\n}\n```\n\nさらに細かい使い方に関しては [Wiki:FactoryFilterについて](https://github.com/baban/flextures/wiki/Factoryfilter%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6) を参照して下さい\n\n\u003ca name=\"configuration\"\u003e\u003c/a\u003e\n### 設定ファイル\n\n`config/initializers/flextures.rb`　で設定ファイルを作成すると、データをロード＆ダンプするディレクトリなどの設定を変更できます\n\n```ruby\nFlextures::Configuration.configure do |config|\n  # Load and dump directory change \"spec/fixtures/\" to \"test/fixtures/\"\n  config.load_directory = \"test/fixtures/\"\n  config.dump_directory = \"test/fixtures/\"\nend\n```\n\nその他の情報は [Wiki:設定ファイルの書式について](https://github.com/baban/flextures/wiki/%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%9B%B8%E5%BC%8F%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を参照して下さい\n\n\u003ca name=\"contributing\"\u003e\u003c/a\u003e\n## 貢献\n\nhttps://github.com/baban/flextures/graphs/contributors\n\n\u003ca name=\"licence\"\u003e\u003c/a\u003e\n## ライセンス\n\nこのソフトウェアは [MIT ライセンス](http://www.opensource.org/licenses/MIT)によってライセンスされています。\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaban%2Fflextures","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbaban%2Fflextures","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbaban%2Fflextures/lists"}