How to generate Barcode using Barby Gem in Rails 2.3.8
November 6, 2012
A barcode is a series of vertical black lines with white spaces in between. This series of lines and spaces can be read by a device that can decode them. This would be a barcode reader. In Ruby on Railsthere is a gem called “barby” which generates the barcode with various format.
Here is an example to create barcode using barby & Rails 2.3.8.
Include the barby gems in your config/environment.rb file
config.gem'barby' config.gem 'barby-chunky_png' config.gem 'png''RubyInline'
Install the gems by running the commandrake gems:install. Restart the Rails server.
You might face problem to start the server after the gems installed.Comment out the gems “png” & “RubyInline” in the “config/environment.rb” to get the server started.
Create a folder named “Barcodes” to store the barcode images in your “Public” folder.
Add the below lines of code in your controller
The following method will generate the barcode images and store in the “/public/Barcodes” path. Place this method inside the controller.
The “symbology” is the format in which the barcode will be generated. Default is “Code128B”, If you want to generate in different format you can set the “symbology” according to it.
def generate_barcodes(data) # check to see if we don't already have this barcode image uri = CGI.escape(symbology) + '_' + CGI.escape(data) + '.jpg' fname = RAILS_ROOT + '/public/Barcodes/' + uri #fname = '/var/www/html/arc_cloud/arcdevelopment/' + uri # if the barcode image doesn't already exist then generate and save it if ! File.exists?(fname) str = 'Barby::'+symbology+'.new("'+data+'")' begin barcode = eval str rescue Exception => exc barcode = Barby::Code128B.new(data) # fall back to Code128 type B end File.open(fname, 'w') do |f| f.write barcode.to_jpg end end uri end
To show the Barcode images call the following lines of code
<img src="/Barcodes/<%= @job_info.job_number %>.jpg" >