Forum: Ruby read a ruby script like you would read a text file

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.
Cf63da956b6ba955687a2f2f262928cb?d=identicon&s=25 Mmcolli00 Mom (mmcolli00)
on 2009-01-27 19:48
Do you know if this is possible:
I want to read each ruby script in a directory (btw there a hundreds of
them) and then use that info to lable and make reports later. For now, I
just want to know if there is a possiblity to do this.

Each script contains an intialized setting that I can use to distinguish
the difference in my file standards. Later, I am going to create a
report based on what is available. Any suggestions for the below code?
Thanks, MC


Dir.entries("C:/ScriptDirectory").each do |filename|
  if File.extname(filename) == ".rb" then  #read a ruby file
    File.open(filename, 'r') do |f1|
      f1.each_line |line|
       @fileStandard1 << filename if line =~ /setting343234/
       puts "Stardard1" +@fileStandard1
       @fileStandard2 << filename if line =~ /setting343999/
       puts "Standard2" +@fileStandard2
       @fileStandard3 << filename if line =~ /setting343245/
       puts  "Standard3" +@fileStandard3
    end
    end
 end

##this code is a snippet I am going to use the new variables later in
the program.
E0d864d9677f3c1482a20152b7cac0e2?d=identicon&s=25 Robert Klemme (Guest)
on 2009-01-27 23:40
(Received via mailing list)
On 27.01.2009 19:46, Mmcolli00 Mom wrote:
> Do you know if this is possible:
> I want to read each ruby script in a directory (btw there a hundreds of
> them) and then use that info to lable and make reports later. For now, I
> just want to know if there is a possiblity to do this.

What do you mean by "read"?  Do you want to execute the Ruby code in
those scripts?

>        @fileStandard1 << filename if line =~ /setting343234/
> the program.
There seems to be a bit of redundant code.  How about

@file_standards = {
   343234 => [],
   343999 => [],
   343245 => [],
}

Dir["C:/ScriptDirectory/*.rb"].each do |file|
   File.foreach file do |line|
     num = line[/settings(\d+)/, 1].to_i
     std = @file_standards[num] and std << file
   end
end

Cheers

  robert
Cf63da956b6ba955687a2f2f262928cb?d=identicon&s=25 Mmcolli00 Mom (mmcolli00)
on 2009-01-27 23:55
Thanks Robert,

Yes, I didn't want to run the scripts only read through them and
categorize them. This really did the trick. Pretty fancy and efficient
too! :-)

Thanks, MC
This topic is locked and can not be replied to.