I am trying to get a .rb file to make another .rb file within a specific directory with specified content, when that file is run. I dont know whether the best way to do this would be with a Ruby file or a Rake file. You input would be great.
Asked
Active
Viewed 9.6k times
3 Answers
45
If you just need to perform a simple script like creating a file, you can simply use a Ruby script without creating a rake task.
# file origin.rb
target = "target.rb"
content = <<-RUBY
puts "I'm the target!"
RUBY
File.open(target, "w+") do |f|
f.write(content)
end
And you can execute the file with
$ ruby origin.rb

Simone Carletti
- 173,507
- 49
- 363
- 364
-
I think you can also use puts instead of write – JohnMerlino Aug 08 '14 at 05:58
25
directory = "../../directory"
File.open(File.join(directory, 'file.rb'), 'w') do |f|
f.puts "contents"
end

Dogbert
- 212,659
- 41
- 396
- 397
-
Thanks Dogbert - if I had more complex content, like a few methods with constants which can be placed within a string, how would I go about it. – ChuckJHardy Feb 15 '11 at 20:45
-
What format do you have the content in? How are you getting/generating the content? – Dogbert Feb 15 '11 at 23:24
19
This turned out to be the best solution.
File.open("linecount.txt",'w') do |filea|
File.open("testfile.txt",'r') do |fileb|
while line = fileb.gets
filea.puts line.length
end
end
end

ChuckJHardy
- 6,956
- 6
- 35
- 39
-
2
-
Where should I write this code ? i have same requirement but i dont know where should i write this code and execute this – Vikram Jul 26 '15 at 14:24