Welcome to day 33 of the 49 Days of Ruby! 🎉
Yesterday, we discussed what Rubygems is as a service. Today we will break down how to create your own gem.
As a recap, a gem is a packaged piece of code that can be downloaded and installed into your code to extend its functionality. Gems exist to help with a wide array of things, like authentication, styling, dashboards, etc.
How do you create your own gem?
In your terminal, you can create a new directory called
Within that directory, create a file called
Then, add another directory called
lib. Inside, the
lib directory add a file called
After you have finished your file structure should look like this:
./my_first_gem ├── my_first_gem.gemspec └── lib └── my_first_gem.rb
The functionality for your gem will be inside the
my_first_gem.rb file. Let's have it tell us about coffee today:
class MyFirstGem def self.coffee puts "Today is an espresso kind of day" end end
Now your gem will output "Today is an espresso kind of day". It's not the most functional of applications, but it is an application.
In the top-level folder, we added a file that had a
.gemspec extension. This is the gem specification file for our gem.
There are specific fields required and a lot of optional parameters. You can see the details here.
At the most basic, you'll need the following:
Gem::Specification.new do |s| s.name = "my_first_gem" s.version = "0.0.1" s.summary = "Prints out espresso whenever you want" s.description = "This gem outputs a string about coffee" s.authors = ["Your Name"] s.email = "Your email" s.files = ["lib/my_first_gem.rb"] s.homepage = "your gem's homepage link" s.license = "MIT" end
In the above, we specify the name of our gem, a version number, a summary and description, and who we are.
We also, tell the gem where to find the code:
s.files = ["lib/my_first_gem.rb"]
This is very important because, without it, the gem would not know what to do!
To run your code as a gem, you need to build it:
$ gem build my_first_gem.gemspec
Then, you can install it:
$ gem install ./my_first_gem-0.0.1.gemspec
Now, it's ready to use locally!
If you want to get even more details, I highly recommend following this guide on the Rubygems site. You will see the same steps, with more explanation, and great resources to continue the discussion.
Come back tomorrow for the next installment of 49 Days of Ruby! You can join the conversation on Twitter with the hashtag #49daysofruby.