4

I want to run a ruby class from a sample.rake file.

Consider myruby.rb is a ruby file.

I want to run this from sample.rake like ruby myruby.rb

Gnik
  • 7,120
  • 20
  • 79
  • 129

2 Answers2

9

Adding to what @tobias has to say here you go with an example script

sample content of myruby.rb

puts "hello world"

Create file called Rakefile

task :default => [:test]

task :test do
    ruby "my_file.rb"
end

Now if you invoke rake it should file up hello world text in console.

Update

It would make more sense if you wrap your call in a function call as suggested already by @tobias

So your Rakefile would become something like

require './myruby.rb'
task :default => [:test]

task :test do
  ruby "my_file.rb"
end

task :test2 do
  do_something
end

and myruby.rb

def do_something
  puts "do something"
end

Now rake test2 should spit out do something

ch4nd4n
  • 4,110
  • 2
  • 21
  • 43
1

You could use system calls

e.g. http://www.ruby-doc.org/core-2.0/Kernel.html#method-i-system

Alternatively assuming your reason for doing it this way is that myruby.rb is a plain ruby script that just works on execution:

You could think about enclosing the content of the script into a method, require 'myruby' in the rake task and executing said method in the rake task.

  • myruby.rb is a ruby class. There is no particular method to run from sample.rake. In myruby.rb I have begin...rescue... block thats it. I need to run like 'ruby myruby.rb'. This will bring me what i want. – Gnik Aug 13 '13 at 12:58