How to implement a simple captcha in Rails using gem ‘simple_captcha’

Here it is, a simple captcha for Rails applications.

To set up, add the following line to your Gemfile

gem "galetahub-simple_captcha", :require => "simple_captcha"

Run rails generator

rails generate simple_captcha

Do db Migration

rake db:migrate -t

In your view file add

%= show_simple_captcha %

Add the following in yml file
en.yml:

en:
  simple_captcha:
    label: "Enter the above code"
    placeholder: "Enter here"

In controller just include captcha helpers module

class ApplicationController < ActionController::Base
  include SimpleCaptcha::ControllerHelpers
end

Use this code in the controller for the captcha validation

if simple_captcha_valid?
  do this
else
  do that
end

Details about pg gem error: Can’t find the ‘libpq-fe.h header when doing bundle in Rails

If you are getting errors like:

installing pdf-reader 1.3.3
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

/home/vagrant/.rvm/rubies/ruby-2.2.0/bin/ruby -r ./siteconf20150306-5919-1rr483p.rb extconf.rb
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

when trying to install pg gem,
you are just missing some dependancy library related to libpq. Install the following package


$ sudo apt-get install libpq-dev

then do


$ gem install pg -v 'version-no'

then do


bundle install

Details about paperclip error: ‘Paperclip::AdapterRegistry::NoHandlerError’ when you use paperclip gem in Rails

When I was working with rails and paperclip I got this error.

Paperclip::AdapterRegistry::NoHandlerError
 = form_tag my_path, :method => :post do
  -------
  = file_field_tag "attachment" 
  -----
 

I submitted a form and it was not saving. There I found that the form sending a file too. I missed

:multipart => true 

option in the ‘form_tag’ when submitting the form. The form really not sening a file and paperclip not getting an attachment. So it throws this error.

 = form_tag my_path, :method => :post, :multipart => true do
  -------
  = file_field_tag "attachment" 
  -----

How to find index of records rendered by a partial with collection in Rails

Using render partial with collection how to find the index of the records?

Somewhere I found that someone is commented like,
“It seems this is an undocumented feature of rails.”

Anyway we can find this by using ‘recordName_counter’.

Render a partial with collection


= render :partial = > "person", :collection => @winners
Name: = person.name 

In Partial write


  Rank: = person_counter + 1
  Name: = person.name 

Result


Rank: 1 Name: Peter
Rank: 2 Name: Paul
Rank: 3 Name: Mary

Details about Rails paperclip error: ‘There was an error processing the thumbnail for paperclip-reprocess’

I got this error while working with paperclip. The project was stable and I have no idea why this error happens at this point of time.

[paperclip] An error was received while processing: #
[paperclip] An error was received while processing: #<Paperclip::PaperclipError: There was an error processing the thumbnail for paperclip-reprocess20110822-2281-19969sz

So I was lazy to fix the error, and find that I have no imagemagick installed in my new system. After installing ‘imagemagick’ it got fixed.

$ sudo apt-get update
$ sudo apt-get install imagemagick --fix-missing

Install Rails 3.2 using rvm on redhat

Upgrade Packages

yum update

Installing Recommended Packages

yum install gcc-c++ patch readline readline-devel zlib zlib-devel 
yum install libyaml-devel libffi-devel openssl-devel make 
yum install bzip2 autoconf automake libtool bison iconv-devel

Install RVM ( Ruby Version Manager )

$ curl -L get.rvm.io | bash -s stable

Install Required Ruby Version

$ rvm install 1.9.3

Install rails

$ gem install rails --version '3.2.19'

Install Rails 3.2 with Ruby 1.9.3 using rvm in Ubuntu 14.0.1

Check ruby is already installed in your system or not

$ ruby -v 

Install curl if not installed

$ sudo apt-get install curl

Check curl version by

$ curl --version

Install RVM

Execute the command in the terminal

$ curl -L https://get.rvm.io | bash -s stable

If the installation is done, close the terminal window and open it again to load the rvm into the shell

Check rvm version

$ rvm -v

rvm 1.25.30 (stable) by Wayne E. Seguin , Michal Papis  [https://rvm.io/]

List rvm known rubies

$ rvm list known

Use rvm to install ruby 1.9.3

$ rvm install 1.9.3

Check the ruby versions available

$ rvm list rubies

Check the ruby version by

$ ruby -v

If this again shows the message to install ruby, then set this ruby version as default

$ rvm use ruby-1.9.3-p547 --default

then check ruby -v

Make gem package up to date

$ gem update

Install Rails 3.2.19

$ gem install rails --version '3.2.19'

Check rails version

$ rails -v 

You are ready to go!

ThinkingSphinx::SphinxError (undefined method `next_result’ for Mysql2 (rails 3)

I got this error after my thinking sphinx updation to the newest version of ‘3.0.5’. The error shows in the exact line of the code Model.search in my Rails controller. I updated my mysql2 version to ‘0.3.13’, and the issue is solved.
So in you Gemfile update the mysql2 version:

gem 'mysql2', '0.3.13'

And do

$ bundle install

Install Rails 4.0 with Ruby 2.0

Get the stable version of rvm:

$ rvm get stable

Install Ruby 2.0

$ rvm install ruby-2.0.0

Create a Gemset;

$ rvm gemset create rails-4.0

Goto that gemset:

$ rvm use ruby-2.0.0-p247@rails-4.0

Install Rails 4.0

$ gem install rails --version=4.0

Create an rvmrc file in root folder:

$ vim rvmrc
$ rvm --rvmrc use ruby-2.0.0-p247@rails-4.0

uncomment the line gem ‘therubyracer’, platforms: :ruby from Gemfile

Start the server:

$ rails s

You are ready to go!!

Changes that you may need to perform while working with Rails 4 compared to old versions:

1. Check here for the New changes in Rails 4
http://net.tutsplus.com/tutorials/ruby/digging-into-rails-4/
http://www.alfajango.com/blog/rails-4-whats-new/
http://www.sitepoint.com/get-your-app-ready-for-rails-4/
2. If you are using devise gem use devise version 3 or above (http://blog.plataformatec.com.br/2013/05/devise-and-rails-4/)