# Running scripts from a controller

**URL:** <https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212>\
**Category:** Rails\
**Created:** [April 8, 2008, 10:41pm UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212 "2008-04-08T22:41:17Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 8, 2008, 10:41pm UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212/1 "2008-04-08T22:41:17Z")

</div>

Hello,  
I am developing an app that needs to run a scripts outside of MVC. I  
have a Ruby script called ‘test.rb’ located in ‘public/tools’ that I  
would like to initiate from a controller. In my controller I tried the  
following:

test = `/tools/test.rb`

…but with no result. Does anybody know the correct path or method to  
do this?

Thanks,

- Jeff M.

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 8, 2008, 11:09pm UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212/2 "2008-04-08T23:09:50Z")

</div>

On 8 Apr 2008, at 21:41, Jeff M. wrote:

> do this?  
> Use the RAILS\_ROOT constant to get the path for the root of your app

Fred

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 8, 2008, 11:53pm UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212/3 "2008-04-08T23:53:42Z")

</div>

hmm… I can’t seem to get the right path… It keeps telling me this:

RAILS\_ROOT: ./script/…/config/…

I’ve tried a few different paths and different ways to call it:  
require “#{RAILS\_ROOT}/public/tools/grab\_ad.rb”  
grab\_ad = `#{RAILS_ROOT}/public/tools/grab_ad.rb`

none of them work…

Any suggestions?

Thanks,

- Jeff

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 9, 2008, 12:46am UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212/4 "2008-04-09T00:46:14Z")

</div>

I’m still new to RoR… I’m not sure exactly how to go about what you’re  
talking about… However, I found that it works perfectly if I just use  
grab\_ad = `grab_ad.rb` IF grab\_ad.rb is located in the root of my app.  
However, when I try to put it in root\public, it doesn’t work at all.  
I’m going to keep trying to experiment…

Thanks,

- Jeff

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 9, 2008, 12:49am UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212/5 "2008-04-09T00:49:26Z")

</div>

Have you done either of these:

chmod +x grab\_ad.rb

-or-

grab\_ad = `ruby #{File.join(RAILS_ROOT, '/public/tools/grab_ad.rb')}`

BTW: Putting anything executable in a publicly accessible location is  
a security risk.

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 9, 2008, 12:21am UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212/6 "2008-04-09T00:21:19Z")

</div>

On 8 Apr 2008, at 22:53, Jeff M. wrote:

> hmm… I can’t seem to get the right path… It keeps telling me this:
> 
> RAILS\_ROOT: ./script/…/config/…
> 
> I’ve tried a few different paths and different ways to call it:  
> require “#{RAILS\_ROOT}/public/tools/grab\_ad.rb”  
> grab\_ad = `#{RAILS_ROOT}/public/tools/grab_ad.rb`

Have you printed these to the console/log/etc… to see if it looks  
vaguely sane ? Are you changing the current directory anywhere ? Also  
look into File.expand\_path which resolves all those fiddly … and .

Fred

---

<div class="post-metadata">

**Author:** ![sithadmin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/858c86/32.png) [@sithadmin](https://www.ruby-forum.com/u/sithadmin)\
**Post date:** [April 9, 2008, 1:38am UTC](https://www.ruby-forum.com/t/running-scripts-from-a-controller/134212/7 "2008-04-09T01:38:52Z")

</div>

Jeff M. wrote:

> Hello,  
> I am developing an app that needs to run a scripts outside of MVC. I  
> have a Ruby script called ‘test.rb’ located in ‘public/tools’ that I  
> would like to initiate from a controller. In my controller I tried the  
> following:
> 
> test = `/tools/test.rb`
> 
> …but with no result. Does anybody know the correct path or method to  
> do this?
> 
> Thanks,
> 
> - Jeff M.

Move your file to the lib directory:

lib/test.rb

Add

require ‘test’

to config/environment.rb

Your Ruby code from file test.rb is now available in your application.

Stephan
