From: Eric Hodel Date: 2006-12-19T16:31:48+09:00 Subject: Re: Strategies for writing Ruby applications to be easily distributed with RubyGems On Dec 18, 2006, at 22:34, Zev Blut wrote: > This is mostly a repost of ruby-talk[229723] with some clarifications > and an appeal for ideas. > > I have recently attempted to write a RubyGem for the Saikuro project. > Unfortunately, I have learned that there is a mismatch between how I > wrote Saikuro and how RubyGems expects executables to work. > > I would like to know is are there any better or commonly followed ways > of writing executables that work with RubyGems and other installation > programs such as setup.rb ? My executables typically consist of three lines: #!/usr/local/bin/ruby -w require 'some_file' SomeFile.run Where SomeFile::run is something like: class SomeFile def self.run(args = ARGV) options = process_args args new(option[:foo]).run end end > 2) > I was reading through the Programming Ruby book and found a part that > showed how to use rdoc to create usage messages. I figured this might > be better than my normal technique so I used it in Saikuro. This has > caused a number of problems actually. What does this technique look like? I'm not familiar with it. > My original goal was to keep Saikuro simple so that as a single file > nothing complicated was needed. But now I suppose that should change. > > I am planning to move all logic above and "if __FILE__ == $0" block > into a separate library file. Then add a require to this newly made > file and remove the "if __FILE__" check logic to make the insides of > the block automatically run. I keep these together, but put the logic that would normally go in "if __FILE__ == $0" into its own method or methods. That keeps the executable as simple as possible. -- Eric Hodel - drbrain@segment7.net - http://blog.segment7.net I LIT YOUR GEM ON FIRE!