# Execute ruby file from a ruby file

**URL:** <https://www.ruby-forum.com/t/execute-ruby-file-from-a-ruby-file/190116>\
**Category:** Ruby\
**Created:** [June 15, 2010, 9:35pm UTC](https://www.ruby-forum.com/t/execute-ruby-file-from-a-ruby-file/190116 "2010-06-15T21:35:03Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![gregm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/bc79bd/32.png) [@gregm](https://www.ruby-forum.com/u/gregm)\
**Post date:** [June 15, 2010, 9:35pm UTC](https://www.ruby-forum.com/t/execute-ruby-file-from-a-ruby-file/190116/1 "2010-06-15T21:35:03Z")

</div>

Hi,  
I can’t find out how can I execute my ruby script from another ruby  
file.

This is how I would do it in command line  
ruby jobs/eventParser.rb “5454353”

Greg

---

<div class="post-metadata">

**Author:** ![gregm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/bc79bd/32.png) [@gregm](https://www.ruby-forum.com/u/gregm)\
**Post date:** [June 15, 2010, 10:19pm UTC](https://www.ruby-forum.com/t/execute-ruby-file-from-a-ruby-file/190116/2 "2010-06-15T22:19:21Z")

</div>

Greg Ma wrote:

> I can’t find out how can I execute my ruby script from another ruby  
> file.
> 
> This is how I would do it in command line  
> ruby jobs/eventParser.rb “5454353”

system “ruby”, “jobs/eventParser.rb”, “5454353”

system “ruby jobs/eventParser.rb 5454353”

The latter is less secure since it passes the string to a shell for  
splitting into words, and you have to worry about things like quoting,  
but it lets you do redirection and shell pipelines, e.g.

system “ruby jobs/eventParser.rb 5454353 2\>/dev/null”

However, it may be an idea to try to write your ruby code in such a way  
as it could be used directly from the first ruby program. Then it might  
become:

require ‘jobs/eventParser’  
EventParser.new.run(“5454353”)

This is more efficient because you don’t spawn a whole new ruby  
interpreter, and becomes even more efficient if you are repeatedly using  
the EventParser object.

jobs/eventParser.rb can be written in such a way as it will work both  
ways:

class EventParser  
def run(args)  
…  
end  
end  
if **FILE** == $0  
EventParser.new.run(ARGV)  
end

HTH,

Brian.

---

<div class="post-metadata">

**Author:** ![gregm](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/bc79bd/32.png) [@gregm](https://www.ruby-forum.com/u/gregm)\
**Post date:** [June 17, 2010, 4:22pm UTC](https://www.ruby-forum.com/t/execute-ruby-file-from-a-ruby-file/190116/3 "2010-06-17T16:22:41Z")

</div>

On Tue, Jun 15, 2010 at 1:35 PM, Greg Ma [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Hi,  
> I can’t find out how can I execute my ruby script from another ruby  
> file.
> 
> This is how I would do it in command line  
> ruby jobs/eventParser.rb “5454353”

ri Kernel#system

## ---------------------------------------------------------- Kernel#system system(cmd [, arg, …]) =\> true or false

```
 Executes _cmd_ in a subshell, returning +true+ if the command was
 found and ran successfully, +false+ otherwise. An error status is
 available in +$?+. The arguments are processed in the same way as
 for +Kernel::exec+.

    system("echo *")
    system("echo", "*")

 _produces:_

    config.h main.rb
    *

```

Kirk H.
