Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I run a ruby class from rake file?

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

like image 221
Rajaa Avatar asked Dec 25 '22 22:12

Rajaa


2 Answers

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

like image 155
ch4nd4n Avatar answered Jan 02 '23 19:01

ch4nd4n


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.

like image 35
Tobias Schoknecht Avatar answered Jan 02 '23 19:01

Tobias Schoknecht