Ruby on Rails Gems What is a gem?


Example

A gem is the equivalent to a plugin or an extension for the programming language ruby.

To be exact even rails is nothing more than a gem. A lot of gems are built on rails or other gems (they are dependent of said gem) or are standalone.

In your Rails project

Gemfile

For your Rails project you have a file called Gemfile. In here you can add gems you want to include and use in your project. Once added you need to install the gem by using bundler (See Bundler section).

Gemfile.lock

Once you have done this, your Gemfile.lock will be updated with your newly added gems and their dependencies. This file locks your used gems so they use that specific version declared in that file.

GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)

This example is for the gem devise. In the Gemfile.lock the version 4.0.3 is declared, to tell when installing your project on an other machine or on your production server which specified version to use.

Development

Either a single person, a group or a whole community works on and maintains a gem. Work done is usually released after certain issues have been fixed or features have been added.

Usually the releases follow the Semantic Versioning 2.0.0 principle.