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

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1e2dd87a31c5d3e07adc9efa375f4dc4?d=identicon&s=25 rph (Guest)
on 2007-05-01 14: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
end

private

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

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 ~/site.com/site/script/custom/api_cache.rb"

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???
Thanks!
A4a3266a04bd8fb9935fa5684e14d6ef?d=identicon&s=25 Dustin Frisell (dustin)
on 2007-05-01 20:34
try


result = `ruby ~/site.com/site/script/custom/api_cache.rb`
8310c5a7c769345114597bcdef111488?d=identicon&s=25 Ben Munat (Guest)
on 2007-05-01 20: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:
MyScriptClass.my_script.

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.

b

[1] http://kb.mediatemple.net/article.php?id=251
This topic is locked and can not be replied to.