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.