What are Gems?
There’s already a handful of terms that you’ve learned by now. Another term you’ll need to be familiar with is “gems”. A gem, used in this context, is a self-contained format that contains Ruby libraries and programs. It is a module that you can install into your system and use for various kinds of projects on your server. Gems come in handy when you want to share a code and publish it in a website like github.com.
A gem command, meanwhile, is what you use to handle gem packages as well as build and handle .gemspec and .gem files. You can check RubyGems Manuals to learn more about how to use gems.
How RailsWizard Works
Simply put, RailsWizard is a web application on which you can execute a number of commands, as well as build and customize Rails application templates. It has a number of interconnected components that are able to work separately though not completely independently of each other. Starting RailsWizard is also very simple. You only need to run the “rails_wizard new APP_NAME” command.
RailsWizard has a collection of gems and recipes that are very useful to those who need them. The RailsWizard gem serves as the one-stop shop for RailsWizard libraries. It also functions as a tool that enables users to generate rails templates from the command line.
Like any other program, RailsWizard went through some growing pains and improvement over time. It has had three versions over the course of its run. The developer Michael Bleigh rewrites RailsWizard and overhauls it completely in order to make it more efficient and more useful to other developers. With the latest version, users will now be able to run RailsWizard through the command line by using the RailsWizard gem.
RailsWizard has undergone three incarnations since its release in 2004. Each version addresses particular problems that the community of users brought up with the developers., as well as other issues that the developers noticed.
With the first version of RailsWizard, users were able to easily build a Rails 3 application template. What made RailsWizard special in the performance of this task was that users were able to build the application step by step. This version got rid of a lot of the repetitive steps that constituted the creation of a new application. Of course, this being the first version, it had the inevitable crop of problems.
The first problem was the fact that the community was unable to update the recipes themselves. Another was that Michael Bleigh wanted to improve upon the design. Lastly, Bleigh wanted to make the steps much less complicated.
Version 2 of RailsWizard came about from the improvements upon the problems found in the first version. For one thing, the site became much more streamlined, and all pertinent information was found in one page instead of multiple pages detailing multiple steps. The site design was also given a makeover, solving two of the problems cited above.
However, the first release of version 2 still wasn’t able to fix the problem of the community being unable to update recipes. To address this problem, Bleigh decided to let the community submit recipes on Github, though of course with moderation. However, this modification was a failure, as people somehow were unaware of the submission process.
Version 3 proved to be more satisfactory to Bleigh. He finally rewrote RailsWizard into what he had always wanted it to be. This third version hinged around four major focal points: speed, configuration, recipes on Github, and the establishment of a command line. Based on these four points, Bleigh felt that he had finally gotten the version that he had always envisioned RailsWizard to be.
The interface also became even simpler and quicker to navigate through. It was stripped down to its barest bones without sacrificing utility. The recipes were finally configurable, and they were stored in Github to make them more accessible. This (now public) version is a great improvement from its previous iterations.
What exactly are these all-important recipes? They are what RailsWizard is built on. Each recipe has a specific function as a piece of template code. These recipes are readable as Ruby codes, and RailsWizard can run independently of them. They are also able to access the wizard_say method, a logging command that handles formatting.
These recipes are git-backed, as intended by Bleigh. One problem that Bleigh faced was how to store the metadata linked to the recipes. He found a solution to this by working around the __END__ statement in Ruby files. Eventually, he was able to make the recipes readable and easier to develop.