Brocade
Brocade generates barcodes for Rails ActiveRecord models.
I extracted this from one of my projects and, although the code is nice and extensible, right now it only does what I need in that project. So for example it could produce barcodes in any symbology -- but currently only does Code 128.
There are two parts to Brocade: barcode generation and file management (because the barcodes are saved as image files). I use Barby to generate the barcodes and code copied from Paperclip to manage the files.
Features
- No configuration necessary...or possible ;)
- Supports Code 128 symbology. Could support any symbology.
- Generates barcode images as PNGs via ImageMagick. Could support other output formats.
- Stores barcode images on disk. Could support other storage.
Basic Usage
Brocade is simple to use:
class Item < ActiveRecord::Base
has_barcode
def barcodable
:serial_number
end
end
First declare declare your model has_barcode
. Second override the barcodable
method to return the name of the method Brocade should call to get the data to barcode.
Now you get this:
>> item = Item.create :serial_number => 42, :name => 'Deep Thought'
# writes barcode to /path/to/your/app/public/system/barcodes/items/3615/code128.png
-- assuming item
's id is 3615.
>> item.update_attributes :name => 'Deeper Thought'
# no change to barcode
>> item.update_attributes :serial_number => 153
# writes barcode to /path/to/your/app/public/system/barcodes/items/3615/code128.png
# i.e. writes out a new barcode image over the top of the original one
>> item.barcode_path
# => "/path/to/your/app/public/system/barcodes/items/3615/code128.png"
>> item.barcode_url
# => "/system/barcodes/items/3615/code128.png"
>> item.destroy
# deletes barcode image.
'Advanced' Usage
You can pass options to Brocade to control the PNG it generates. For example:
class Item < ActiveRecord::Base
has_barcode :margin => 5, :height => 40
end
These options are passed through to Barby's PNG Outputter. Note that setting the width makes no difference.
Installation.
Install as a gem. In your config.rb
:
config.gem 'brocade'
Dependencies
The Barby and PNG gems, and ImageMagick.
Problems
Please use GitHub's issue tracker.
To do
- Tests. Yes, yes, I know.
- Configurable way to specify data to be barcoded.
- Configurable symbology.
- Multiple symbologies per model.
- Configurable file path and URL.
- Other outputters.
- Other storage.
Further reading
Inspiration
Intellectual Property
Copyright (c) 2010 Andy Stewart. See LICENSE for details.