Skip to content
Allows attachment_fu models to fully use fixtures. Ideal for seed, sample or dev data.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
db
lib
spec
.gitignore
MIT-LICENSE
README
Rakefile
init.rb

README

attachment_fu_fixtures
======================
This plugin enables models that implement attachment_fu to also use fixtures. It
processes and stores the attachment file as if it had being uploaded. Useful if
you use fixtures in your tests/specs and want to test with real attachments,
but especially useful for, and intended to be used as, seed data fixtures.

Fixtures are simple and convenient for seed/sample/dev data; they have
built-in tasks (rake db:fixtures:load) and are automatically generated with
scaffolds.

Great for preview and staging environments where you want content and
attachments to be available. Images, for example, can help a fair deal with
presentation (think about your client viewing how the site is evolving) and to
present a more realistic experience. Perfect for production seed data that
requires attachments.

Also useful in development, for when you use fixtures to populate the
interface. Essential for front-end development, and to get a quick glance at
the interface.

Features
========
* Parses and stores attachment files, just like any upload would
* Seamless integration with existing fixtures
* Extremely simple to use
* Keeps all model relationships, just like regular fixtures

Dependencies
============
* Rick Olson's attachment_fu plugin
* Rspec and SQLite if you want to run the specs
* Rails, etc.

Examples
========
To use, all you have to do is add a fixture for the attachment with an
'attachment_file' field, pointing to your attachment file. That's it!

= fixtures/images.yml
beach:
  title: kho phi phi beach
  attachment_file: test/images/maya.png

All other fields required by attachment_fu will be automatically filled in. If
explicitly specified in the fixture though, they take precedence.

belongs_to associations are specified just like in normal fixtures. For
example, for an image that belongs to a user:

= fixtures/images.yml
harbour:
  title: victoria harbour
  attachment_file: test/images/harbour.png
  user: mynyml

To load the fixture data, cd to RAILS_ROOT and call

  rake db:fixtures:load      #for test/fixtures
  rake spec:db:fixtures:load #for spec/fixtures

TIP: If you also use fixtures for tests/specs, I recommend you create a
separate set of fixtures to use as seed data. You can store them in another
directory (e.g. db/dev_data, db/fixtures, or even categorize them per
environment) and create a custom rake task to load them (you can copy-paste
rails's from railties/lib/tasks/databases.rake and simply change the path).

-----
The examples above use rails 2.0 style fixtures. If you're a bit confused by
how fixtures are written here (e.g. because they don't have ids, etc.), check
out http://railscasts.com/episodes/81

Installation
============
If you're using edge rails from the github repository, you can install with the
built in plugin installation command

  ./script/plugin install git://github.com/mynyml/attachment_fu_fixtures.git

Otherwise you can install manually with just a few steps

  o download the tarball at http://github.com/mynyml/attachment_fu_fixtures/tarball/master
    into your vendor/plugins directory
  o extract it
  o rename the extracted directory to attachment_fu_fixtures
  o delete the file you downloaded (you won't need it anymore)

TIP: If you're on linux, the terminal commands for the above steps are:

  from witin your vendor/plugins directory:

  wget http://github.com/mynyml/attachment_fu_fixtures/tarball/master;
  tar zxvf mynyml-attachment_fu_fixtures-*.tar.gz;
  mv mynyml-attachment_fu_fixtures-*/ attachment_fu_fixtures;
  rm mynyml-attachment_fu_fixtures-*.tar.gz

Tests
=====
Tested with:

* attachment_fu (r3179 and commit 3836c313d6)
* rails (2.0.2 r9237 and 2.0.2 gem)
* rspec (1.1.4)

To run specs:

* make sure rspec is installed
* make sure attachment_fu is installed
* make sure sqlite is installed
* run from RAILS_ROOT with rake spec:plugins

Contributions
=============
- Thanks to Patrick Crosby for submitting a patch for the model_class bug
- Thanks to Jeff Webb for patching HABTM and STI handling

Contact
=======
If you have suggestions, comments, a patch, a git pull request, rants, doc
fixes/improvements, etc., feel free to contact me: mynyml at gmail,
irc.freenode.net #rubyonrails

And if you find this plugin useful... I especially appreciate emails mentioning
what sites/projects it's been used with

Happy Hacking!

-------------------------------------------------------------------------
Copyright (c) 2008 Martin Aumont (mynyml), released under the MIT license
Something went wrong with that request. Please try again.