Project

associo

0.0
No commit activity in last 3 years
No release in over 3 years
Implements an easy to use GridFS API for MongoMapper.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

Associo

This is a fork and rework of John Nunemaker's original Joint plugin for MongoMapper. To quote his original README:

MongoMapper and GridFS joined in file upload love.

Usage

Declare the plugin and use the attachment method to make attachments.

class Foo
  include MongoMapper::Document
  plugin Associo

  attachment :image
  attachment :pdf
end

This gives you #image, #image=, #pdf, and #pdf=. The = methods take any IO that responds to read (File, Tempfile, etc). The image and pdf methods return a GridIO instance (can be found in the ruby driver).

Also, #image and #pdf are proxies so you can do stuff like:

doc.image.id
doc.image.size
doc.image.type
doc.image.name

If you call a method other than those in the proxy it calls it on the GridIO instance so you can still get at all the GridIO instance methods.

Setting GridFS Chunk Size

You can set the chunkSize value of the GridFS file by passing in the option to the attachment call. This size is in bytes, and will default to the MongoDB default of 255k.

class Foo
  include MongoMapper::Document
  plugin Associo
  
  attachment :file, chunk_size: 2097152
end

TODO

  • Rework the tests so that they pass again.
  • Rubocop/clean up the code.
  • Maybe refactor a few things to make understanding the plugin just a bit easier. (Not that it's hard. :D)

Note on Patches/Pull Requests

  • Fork the project.
  • Make your feature addition or bug fix.
  • Add tests for it. This is important so I don't break it in a future version unintentionally.
  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
  • Send me a pull request. Bonus points for topic branches.

Copyright

Copyright (c) 2010 John Nunemaker. See LICENSE for details.
Copyright (c) 2016 Randy Carnahan. See LICENSE for details.