Run web server in from any directory as root on the fly using ruby

Many times while testing open source project demos and examples we need to run the html pages on a web-server.
Opening the files directly in browser has it own limitations like while ajax call some browser imposed limitations blah blah...

Instead if putting it in web root directory every time we can use the inbuilt web-server which ruby provides

just go to the directory and run
ruby -rwebrick -e' => 5000, :DocumentRoot => Dir.pwd).start'

-r requires class ( webrick requred here) -e executes code (webserver run on port 5000, with document root as current dir)
enjoy.. :)

Rails performance boost using Passenger/Unicorn Out-Of-Band Work GC

Hello, have u tried Out-Of-Band GC?

Its available in passenger 4 and unicorn its give a very good performance boot to application at cost of some extra memory footprint (in my case 1.6 times than actual memory)

Don't forget to to disable auto gc during requests
GC.disable # Don't run GC during requests is the  main key here

Tune frequency according to application for maximum performance  #unicorn GC_FREQUENCY = 5
#for passenger Trigger out-of-band GC every 5 requests.
use PhusionPassenger::Rack::OutOfBandGc, 5 

Also have your ruby tuned for GC so that it can serve more requests without frequent GC runs

Curb gem Installation problems on Ubuntu

Install the follows libs

sudo apt-get install libcurl4-gnutls-dev libcurl4-openssl-dev

curb gem compiles natively using system libs and it requires curl headers to complile with is not installed by default.

Install the libs and run 

gem install curb

It should install smoothly.. \m/ 

10 tips for securing nginx

truncate and link text helper in rails

snippet to truncate text and link to see more

Code this in application helper.

  def truncate_and_link( text,options ={})
    length = options[:length]
    return text if length.blank?
    url = options[:url] || '#'
    output = raw truncate(text, :length => length)
    output += link_to('more', url) if text.size > length

Useful when eg linking big posts

rails 3.2 with jruby and mysql with rvm in ubuntu

If was trying to migrate one of the app from ruby to jrby to try out the threading benifits.

this wasn't an easy task :D

well the gem dependency did not create a big issue.

the problem came when connecting to mysql with jdbc driver
I had replaced

 gem 'mysql2'

gem 'activerecord-jdbcmysql-adapter'

in Gemfile

But it refused to load the driver saying :

"The driver encountered an unknown error: cannot load Java class com.mysql.jdbc.Driver'

I searched but Google could not answer me :(
then I started looking into activerecord-jdbsmysl-adapter gem and came upon the the file 
activerecord-jdbc-adapter / activerecord-jdbcmysql-adapter / lib / active_record / connection_adapters /jdbcmysql_adapter.rb 

I just copy pasted the code in a application.rb config with a condition if jruby used just after the bundler code

if defined?(JRUBY_VERSION)
  require 'jdbc/mysql'
  Jdbc::MySQL.load_driver(:require) if Jdbc::MySQL.respond_to?(:load_driver)

and boom it worked…

Send devise compatible forgot password mail through action mailer in rails

To have multiple forgot password templates and send it through mailer in rails it is quite easy