- Description
-
The way to store records from YAML file.
- Home Page
-
http://github.com/yukiko/sweet_merb_fixtures/tree/master
- Registered by
-
genki
-
Repository
-
git://github.com/genki/sweet_merb_fixtures.git
-
Problem
-
"github.com/yukiko" is not a URI
====sweet_merb_fixtures
A plugin for the Merb framework and DataMapper that provides a way to create
records from YAML files.
=== How to use:
Send this method in merb irb console,
merb -i
>> Merb::Fixtures.load_fixture("filename without extension", "file2", "file3")
Or
merb -i
>> MF.load_fixture(:file1, :file2)
is also possible.
When using rspec,
- load_fixture method : loading data
- fixtures method : accessing to loaded data
- :given_fixture option : specify fixture file names that a ExampleGroup uses.
By default DataMapper.auto_migrate! is called before storing records.
This option is available for disabling this behavior.
Merb::Plugins.config[:sweet_merb_fixtures][:auto_migrate] = false
Or you can override Merb::Fixture.prepare_database method.
These method are chainable:
Merb::Fixtures::Hash#code_to_create_record
Merb::Fixtures::Hash#code_to_create_child_record
Merb::Fixtures::Hash#code_to_report
Merb::Fixtures::Hash#code_to_report_errors
=== The Location of YAML files:
You can specify the directory for fixture YAML files by
Merb::Plugins.config[:sweet_merb_fixtures][:fixture_dir] = path / to / your_dir
If you don't specify any direcotry, Merb.dir_for(:lib) / fixtures is used.
=== How YAML could be.
1. you can write parameters of multiple storage in a file.
cats:
-
name: Tama
-
name: Tora
dogs:
-
name: Pochi
-
name: Hachi
2. you can specify the one to many associations and :through associations.
parents:
-
name: Tama
children:
-
name: Tora
3. you can specify the name of records.
cats:
-
# pass string as id
id: white
name: Tama
4. you can specify the common value of records.
cats:
# The way could be better.
:"{color: white}"
-
name: Tama
-
name: Shiro
5. you can write erb code in yaml file
cats:
-
name: <%= "a" * 5 %>
More details are in spec doc, actually possible ways are gradually increasing,
it's better to see YAML files under spec/fixture/lib/fixtures/*.yml.