Skip to main content

uncaught exception address already in use bind(2) in rails

uncaught exception address already in use bind(2) ?

You might came across uncaught exception address already in use bind(2) error while trying to start TCP Server for starting your Rails Application. We will see why Address already in use error is thrown by programs while execution. This is most common error that you will come across while developing Rails Application and solution for this is very simple.
Root Cause

Basically the error is self explanatory. It means that server is already started and you are trying to start it again or the some other application is already running on the specific port on TCP server. Thus your program is not able to gain access to that specific port on TCP server.
Finding Process which Process is running

We can find which process is using the address which Rails app tries to run on by using following command:

lsof -i tcp:3000

The above command basically finds process which is using TCP server and 3000 as port address.

The result of above process will be something like:
COMMAND     PID     USER     FD     TYPE     DEVICE     SIZE/OFF     NODE     NAME
ruby     4662     username     12u     IPv4     0x7bc22ecf743faec3     0t0     TCP     *:hbci

Then you will have to kill the process that is using the TCP server with specified source in given command.
Eliminating(Killing) the Process

The process can be killed by using following command:

kill -9 process_id

e.g.

kill -9 4662


(or)
ps aux | grep rails















 kill -9 processor_id



The option -9 is passed to killing the process forcefully.
Re-Running Your Program

Now, you can try running your Rails/Other application and it will start without throwing error: Uncaught exception: Address already in use - bind(2).

Comments

Popular posts from this blog

Gem::LoadError (Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).?

Gem::LoadError (Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).) In rails?


1)change the gemfile in mysql version
 gem 'mysql2'

2)Change to mysql2 version
 gem 'mysql2','0.3.20'

Active Scaffold : Add radio buttons to your form ruby on rails ?

Active Scaffold : Add radio buttons to your form ruby on rails ?

The way to add radio buttons to your active scaffold create/update from is as shown below

#Controller

class UsersController < ApplicationController
active_scaffold :user do |config|
config.label = “Users”
config.columns = [:name, :gender]
config.columns[:gender].form_ui = :radio
config.columns[:gender].options[:options] = [['Male', '1'], ['Female','2']]
end
end

Get the Current url in ruby on rails

request.refererrequest.fullpathrequest.fullpath.split("?")[0]request.referer or request.env['HTTP_REFERER'] your controller to get the referer url. 

--------------------
request.original_url
request.url
request.host_with_port
<link rel="canonical" href="<%= request.url %>" />
<%=request.path%>
How can I get the current absolute URL in my Ruby on Rails view?
The request.request_uri only returns the relative URL.
request.env['REQUEST_URI']

 For Rails 3.2 or Rails 4 you should use request.original_url to get the current URL. More detail.

For Rails 3: You want "#{request.protocol}#{request.host_with_port}#{request.fullpath}", since request.url is now deprecated.

For Rails 2: You want request.url instead of request.request_uri. This combines the protocol (usually http://) with the host, and request_uri to give you the full address