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.
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).
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.
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.