I'm after an overview/clarification of the ideal project structure for a ruby (non-rails/merb/etc) project. I'm guessing it follows
app/
bin/ #Files for command-line execution
lib/
appname.rb
appname/ #Classes and so on
Rakefile #Running tests
README
test,spec,features/ #Whichever means of testing you go for
appname.gemspec #If it's a gem
Have I got something wrong? What parts have I missed out?
Best Solution
I think that is pretty much spot on. By default, Rubygems will add the lib directory to the loadpath, but you can push any directory you want onto that using the $: variable. i.e.
That means when you have say,
surfer.rb
in that dir, you canrequire "surfer"
anywhere and the file will be found.Also, as a convention, classes and singletons get a file and modules get a directory. For instance, if you had the
LolCatz
module and theLolCatz::Moar
class that would look like:That is why there is an lib/appname folder because most libraries are in the
appname
namespace.Additionally, if you try running the command
newgem --simple [projectname]
that'll quickly generate a scaffold for you with just the bare essentials for a Ruby project (and by extension a Ruby Gem). There are other tools which do this, I know, but newgem is pretty common. I usually get rid of the TODO file and all the script stuff.