Almost one and a half year ago Dr Nic introduced us for something really awesome. Until that moment, creating gems where a mysterious for us new beginners. With a website that covers RubyGems 0.8.7 (released at 2005-03-14) it wasn’t easy to build a gem, unless you knew it already.
rake announce # Generate email announcement file and post to rub... rake audit # Run ZenTest against the package rake check_manifest # Verify the manifest rake clean # Clean up all the extras rake clobber_docs # Remove rdoc products rake clobber_package # Remove package products rake config_hoe # Create a fresh ~/.hoerc file rake debug_gem # Show information about the gem. rake default # Run the default tasks rake deploy # Release the website and new gem version rake docs # Build the docs HTML Files rake email # Generate email announcement file. rake gem # Build the gem file testing-0.0.1.gem rake generate_key # Generate a key for signing your gems. rake install # Install the package. rake install_gem # Install the package as a gem rake install_gem_no_doc # Install the package as a gem, without generating... rake local_deploy # Runs tasks website_generate and install_gem as a... rake manifest:refresh # Recreate Manifest.txt to include ALL files rake multi # Run the test suite using multiruby rake package # Build all the packages rake post_blog # Post announcement to blog. rake post_news # Post announcement to rubyforge. rake publish_docs # Publish RDoc to RubyForge rake redocs # Force a rebuild of the RDOC files rake release # Package and upload the release to rubyforge. rake repackage # Force a rebuild of the package files rake ridocs # Generate ri locally for testing rake test # Run the test suite. rake test_deps # Show which test files fail when run alone. rake uninstall # Uninstall the package. rake website # Generate and upload website files rake website_generate # Generate website files rake website_upload # Upload website files to rubyforge
Look at that list! If all I wanted to do was to wrap my library/application as a gem, I sure get a lot of extra goodies. NewGem isn’t longer a gem-generator, it’s a toolkit. It’s a very useful toolkit, but sometimes I just want to generate that gem. Not fill my project up with lots of files I’ll never use.
Gemify is my first real gem released to the public and is dead simple. To quote the website:
Gemify gives you one single executable you should run: gemify. All you need to do is to run that command in your project-folder. All your files in the lib-folder will be requirable and all your files in the bin-folder will be executable.
I want give you more information; you don’t need more information. I’d rather talk about…
Git is the “new” thing in the Ruby/Rails community. For a long time I’ve poked at Git, but I never really got started. Then two projects, completely unaware of each other, appeared: First Gitorious and then GitHub.
GitHub is the easiest (and prettiest) way to participate in that collaboration: fork projects, send pull requests, monitor development, all with ease.
GitHub is free (so far), commercial and better looking. Even though it’s in beta, and requires invites to join (ugh), quite a few famous projects have merged to GitHub. Good for them, but I would never move something as big as Merb to something with a beta-badge. It’s probably not as bad as it seems, because all Git repositories are self contained and every copy is in fact a backup.
Since no-one wanted to give me an invite to GitHub, I had to stick with Gitorious. A great thing about Gitorious is that it’s open-source and is “providing a good environment for OSS projects”.
After using Gitorious for some weeks I can highly recommend it to anyone looking for free, open-source Git hosting (which you also can run on your own server). It’s not as fancy as GitHub, but everything just works!
The idea of “fork projects with ease” doesn’t fit well with “invite only”, so it’s probably best to stick with Gitorious for some time anyway. (If you really want to fork a GitHub-project to Gitorious it is possible)
So grab the source of Gemify, fork it, improve it and let me know. If you don’t like it, improve it or let it be. May the source be with you!