Search This Blog

Tuesday, December 3, 2013

Arquillian WebSite Ruby HAML use textile filter plugin ERROR

I forked the source code for website from arquillian - code.
It uses several technologies under the hood - starting from Ruby, Bootstrap-sass, HAML and end awestruct.

HAML can interpret textile fragments. Recently, however, the textile and maruku plugin filters have been moved to another gem - haml-contrib.
(news)

After installing ruby 1.9.3 and haml with haml-contrib I received the following error when interpreting *.haml files with the ":textile" fragment:

> haml test.html.haml
Haml error on line 261: To use the "textile" filter, please install the haml-contrib gem.
Use --trace for backtrace.

I tested the application on Ubuntu 12.10. The only way I got it to work is when I compiled yaml, ruby and rubygems from source. The following tutorial from CentOS should be of help:



#preparing packages
$ sudo yum groupinstall 'Development Tools'
$ sudo yum install -y httpd-devel openssl-devel zlib-devel gcc gcc-c++ curl-devel expat-devel gettext-devel patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel make bzip2 zlib1g mysql-server
#compaling libyaml
$ wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
$ tar xzvf yaml-0.1.4.tar.gz
$ cd yaml-0.1.4
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
#compiling ruby 1.9.3
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
$ tar xvzf ruby-1.9.3-p194.tar.gz
$ cd ruby-1.9.3-p194
$ ./configure
$ make
$ sudo make install
#rubygems
$ wget http://rubyforge.org/frs/download.php/76073/rubygems-1.8.24.tgz
OR http://production.cf.rubygems.org/rubygems/rubygems-2.1.7.zip
$ tar xvzf rubygems-1.8.24.tgz
$ cd rubygems-1.8.24
$ sudo /usr/local/bin/ruby setup.rb

sudo gem install bundler

Go to your arquillian directory and:
sudo bundle install


Simulate INTERMEC EA15 barcode scanner via UDP packages

The EA15 intermec barcode scanner sends barcodes as UDP packages. To simulate its behaviour without actually owning the device you can send appropriate packages to the device.

PORT: 4080
barcode prefix: 0000

So to send barcode: 5900116011295
You actully need to send: 00005900116011295
which in HEX is: 30 30 30 30 35 39 30 30 31 31 36 30 31 31 32 39 35

On Windows there is Packet Sender.



On Linux you can easily send udp packages from terminal to simulate barcode scanning:

sudo sendip -p ipv4 -is 10.255.255.14 -p udp -us 5070 -ud 4080 -d "0x3030303035393030313136303131323935" -v 10.255.255.125

where 30 30 30 30 35 39 30 30 31 31 36 30 31 31 32 39 35
is the HEX: 00005900116011295
-is  output IP address
-us  output port number
-v destination ip address
-ud destination port address

to send a simple string do:
sudo sendip -p ipv4 -is 10.255.255.14 -p udp -us 5070 -ud 4080 -d "Hello this is a string" -v 10.255.255.125

The same result can be achieved with the socat command on linux:

echo "00005900116011295" | socat - udp-datagram:10.255.255.125:4080

The scanner looks like this: