Forum: Ruby on Rails How to execute shell command from Rails?

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
rph (Guest)
on 2007-05-01 16:33
I'm caching API data from flickr and delicious on my site. I'm using a
ruby script that goes out and collects the data, and marshal's it. For
whatever reason, the cron job will not execute, so as a temporary
alternative, I've placed a "refresh" link that will update the cached
files. However, I cannot get this to execute on Dreamhost (works fine on
my windows machine). Here's what I'm trying:

def refresh_api_cache
  reload_cache(ENV['RAILS_ENV']) and redirect_to :back


def reload_cache(env)
  command = "ruby #{RAILS_ROOT}/script/custom/api_cache.rb"
  case env
    when /development|test/
      system command
    when /production/
      exec command

If I change the production to be "system command" it won't crash, but it
also won't do anything. Just refreshes the page. I've also tried
directly running the script from it's location:

"exec ~/"

It seems as though "exec" is crashing, and I'm not sure what to put in
that situation. Any tips on how to execute shell commands from Rails???
Dustin F. (Guest)
on 2007-05-01 22:34

result = `ruby ~/`
Ben M. (Guest)
on 2007-05-01 22:46
(Received via mailing list)
You could move your script into lib and put its logic into a class with
a class method... then you can just call it from your rails code:

Then, when you figure out your cron problem (see link [1] provided by
Dr. Nic in a response to another post), you can still call this, or you
could make a rake task to call it.


This topic is locked and can not be replied to.