Running scripts from a controller

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.

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

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

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

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.

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

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs