Why IronRuby is AWSOME!

Yesterday I had to detach a folder from the SVN supervision. In order to do that, one needs to delete the .svn folders within the folder and its subfolders.
I decided to take advantage of IronRuby for that matter.

The problem I ran into with this one was that the files on the .svn folder were read-only. This means that in order to delete the folder, I first have to loop over all the files and remove their read-only attribute. I searched the net for a way to do that without such a loop and found a solution that used a WMI request.

IronRuby lets me take the benefit of the great System.Management class and use it in a Ruby script that I can write in no time.

Here is the code that I've ended up with:

____________________________________________________________________________________
require 'mscorlib'
require 'System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

def RemoveSvnFromDir(path)
    # loop over the files in the given path
    Dir.foreach(path) do |filename|
        current_dir = path + "\\" + filename

        # Ignore dot and double-dot.
        next if filename == "." || filename == ".."

        # If the file is the svn folder, remove it using WMI (no need to reset the read-only attributes)
        if filename == ".svn"
            begin
                puts "Removing #{current_dir}"
                dir = System::Management::ManagementObject.new("win32_Directory.Name='#{current_dir}'")
                dir.Get();
                dir.InvokeMethod("Delete", nil,nil);                
            rescue Exception => e
                puts e.to_s
            end
            next
        end
       
        # If this is a folder, recourse into it and detach it from SVN as well
        if File.directory?(current_dir)
            RemoveSvnFromDir(current_dir)
        end
    end
end

# Get the path from the command line and execute
dir_name = ARGV[0]
puts "Detaching SVN from #{dir_name}"
RemoveSvnFromDir(dir_name)
____________________________________________________________________________________

In order to run it, all that is needed is to open cmd and write "ir SVNCleaner.rb c:\MyCodeDirectory" (assuming that the script file is named SVNCleaner.rb).

This is just a small example of the great power that uniting .Net and dynamic languages can unleash, get ready for more!

Happy Succoth!
Shay.


Comments

November 3. 2010 12:38 AM

trackback

.Net Developers Hear Me Out! IronRuby is IN DA HOUSE!

.Net Developers Hear Me Out! IronRuby is IN DA HOUSE!

IronShay

November 3. 2010 12:38 AM

trackback

.Net Developers Hear Me Out! IronRuby is IN DA HOUSE!

.Net Developers Hear Me Out! IronRuby is IN DA HOUSE!

IronShay

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading



Subscribe Subscribe

That's Me!

Hi! I'm Shay Friedman
I'm Shay Friedman - a Visual C#/IronRuby MVP, a consultant and instructor of .NET technologies, author, speaker and new technologies freak
More about me

Contact Me

> Contact page
> Twitter: @ironshay
> LinkedIn profile

Search

Hosted By

I'm hosting this site on Arvixe and I'm very happy with it.
If you're looking for ASP.NET hosting, I highly recommend it
(and if you order from this link I also get some beer money!)
Web Hosting