# Background process

**URL:** <https://www.ruby-forum.com/t/background-process/161096>\
**Category:** Rails\
**Created:** [February 23, 2009, 11:38am UTC](https://www.ruby-forum.com/t/background-process/161096 "2009-02-23T11:38:38Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [February 23, 2009, 11:38am UTC](https://www.ruby-forum.com/t/background-process/161096/1 "2009-02-23T11:38:38Z")

</div>

Hi all

I am working on a heavy engineering project. And the requirement is that  
I needto do a lot of process before I store the data to the db.

Now the question is that I want to do the process that I am doing but I  
want to do it in the background. What I actually mean to say is that…I  
just want the user to get a msg that Records Saved. But in real I want  
the process to go on in background.

There r multiple callbacks used in my system. Also I dont want to use  
Starling or workling. pls suggest something where in my requirement is  
satisfied. Since i dont want the user to wait until my process is going  
on.

thanks

---

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [February 23, 2009, 12:15pm UTC](https://www.ruby-forum.com/t/background-process/161096/2 "2009-02-23T12:15:16Z")

</div>

On 23 Feb 2009, at 10:38, Ankit P. wrote:

> that…I  
> just want the user to get a msg that Records Saved. But in real I want  
> the process to go on in background.
> 
> There r multiple callbacks used in my system. Also I dont want to use  
> Starling or workling. pls suggest something where in my requirement is  
> satisfied. Since i dont want the user to wait until my process is  
> going  
> on.

Well one of the other background processors (bj, backgroundrb etc. )  
might do the job

Fred

---

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [February 23, 2009, 12:28pm UTC](https://www.ruby-forum.com/t/background-process/161096/3 "2009-02-23T12:28:15Z")

</div>

Spawn is dead easy ([http://rubyforge.org/projects/spawn/](http://rubyforge.org/projects/spawn/)). I used it  
to great effect for sending emails while making the user think they  
where all already sent. The others Frederick suggested work but are  
more trouble than starling/workling.

Harm

On Feb 23, 12:14 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [February 23, 2009, 12:44pm UTC](https://www.ruby-forum.com/t/background-process/161096/4 "2009-02-23T12:44:53Z")

</div>

thanks for your reply but i dont want to run something like a cron job  
or nething.

Since my method is very long i want it to run in background. So that the  
user dont need to wait on that page while the process is going on.

Is there something where i can define that a particular method should  
run in background.

Thanks

---

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [February 23, 2009, 12:51pm UTC](https://www.ruby-forum.com/t/background-process/161096/5 "2009-02-23T12:51:37Z")

</div>

On 23 Feb 2009, at 11:44, Ankit P. wrote:

> 

The way you do that reliably is to spawn another process to handle it.  
You can do your thing in a thread but that pretty much requires that  
you’re using a thread safe version of rails and has limitations given  
ruby’s threading (eg your thread can block the whole mongrel)

Fred

---

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [February 24, 2009, 10:24am UTC](https://www.ruby-forum.com/t/background-process/161096/6 "2009-02-24T10:24:13Z")

</div>

Hi Ankit,  
I found a solution that looks good and simple, see  
[http://devblog.imedo.de/2008/6/18/running-ruby-blocks-in-the-background](http://devblog.imedo.de/2008/6/18/running-ruby-blocks-in-the-background).  
I haven’t tried it yet.  
Best Regards,  
Onno

On Feb 23, 5:38 am, Ankit P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [March 1, 2009, 11:49pm UTC](https://www.ruby-forum.com/t/background-process/161096/7 "2009-03-01T23:49:38Z")

</div>

I think you can use ActiveMQ and Activemessaging plugin

[http://code.google.com/p/activemessaging/wiki/ActiveMessaging](http://code.google.com/p/activemessaging/wiki/ActiveMessaging)  
[http://activemq.apache.org/](http://activemq.apache.org/)

---

<div class="post-metadata">

**Author:** ![ankitparekh](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/d9b06d/32.png) [@ankitparekh](https://www.ruby-forum.com/u/ankitparekh)\
**Post date:** [February 23, 2009, 11:38pm UTC](https://www.ruby-forum.com/t/background-process/161096/8 "2009-02-23T23:38:12Z")

</div>

Ankit P. wrote:

> 

I understand why you want to run it in the background but…what  
happens if there is an error? I do not write perfect code or test 100%  
of possible code paths or run on failproof hardware so there is always a  
possibility of an error. You will seem to have the situation where the  
user thinks everything was processed and saved into the db but that  
might not be true. I would not be happy if that happened with my data.  
Personally I would probably want to wait to see all was really  
successful.
