RubyGems






































RubyGems
Stable release
3.0.3
/ March 4, 2019; 27 days ago (2019-03-04)

Repository
  • github.com/rubygems/rubygems
Edit this at Wikidata
Written in Ruby
Operating system Cross-platform
Type Package manager
License Ruby License
Website rubygems.org










Total gems 133,000+
Total downloads 14+ billion

RubyGems is a package manager for the Ruby programming language that provides a standard format for distributing Ruby programs and libraries (in a self-contained format called a "gem"), a tool designed to easily manage the installation of gems, and a server for distributing them. It was created by Chad Fowler and Richard Kilmer during RubyConf 2004.[1]


The interface for RubyGems is a command-line tool called gem which can install and manage libraries (the gems).[2] RubyGems integrates with Ruby run-time loader to help find and load installed gems from standardized library folders. Though it is possible to use a private RubyGems repository, the public repository is most commonly used for gem management.


The public repository helps users find gems, resolve dependencies and install them. RubyGems is bundled with the standard Ruby package as of Ruby 1.9.[3]




Contents






  • 1 History


  • 2 Structure of a gem


  • 3 Working with gems


    • 3.1 gem command


      • 3.1.1 gem usage


      • 3.1.2 gem package building






  • 4 Security Concerns


  • 5 See also


  • 6 References


  • 7 External links





History


Development on RubyGems started in November 2003 and was released to the public on March 14, 2004, or Pi Day 2004.[4] In 2010, the default public repository for gems moved from http://gems.rubyforge.org to http://rubygems.org, which is still in use. Also, RubyGems development was moved to GitHub in 2010. Though RubyGems has existed since Ruby 1.8, it was not a part of the standard Ruby distribution until Ruby 1.9.


Previously, compatibility with RubyGems and Ruby varied. Many versions of RubyGems are almost fully incompatible with many versions of Ruby and some versions had key features unusable. For example, Ruby 1.9 came with RubyGems 1.3.7 in its standard distribution, but RubyGems 1.4.x was not compatible with Ruby 1.9. This meant that updating RubyGems on Ruby 1.9 was not possible until RubyGems 1.5.0 was released in 2011, two years after the first stable release of Ruby 1.9.[5] These compatibility issues led to a rapid development of RubyGems, switching to a 4–6 week release schedule. This is reflected in there being 38 releases from 2004 to 2010 and 117 releases from 2011 to 2016. 45 versions were released in 2013, which is the highest number of releases in a year for RubyGems.[4]



Structure of a gem


Every gem contains a name, version and platform. Gems work only on ruby designed for a particular platform based on CPU architecture and operating-system type and version.[6]


Each gem consists of:



  1. Code

  2. Documentation

  3. Gem specification (Gemspec)


The code organization follows the following structure for a gem called gem_name:


gem_name/
├── bin/
│ └── gem_name
├── lib/
│ └── gem_name.rb
├── test/
│ └── test_gem_name.rb
├── README
├── Rakefile
└── gem_name.gemspec


  • The lib directory contains the code for the gem.

  • The test (or spec) directory is used for testing.

  • Rakefile is used by Rake to automate tests and to generate code.


  • README includes the documentation, RDOC, for most gems.

  • Gem specification (gemspec) contains information about the author of the gem, the time of creation and the purpose the gem serves.



Working with gems


Gems are packages similar to Ebuilds. They contain package information along with files to install.


Gems are usually built from ".gemspec" files, which are YAML files containing information on gems. However, Ruby code may also build gems directly. Such a practice is usually used with Rake.



gem command


The gem command is used to build, upload, download, and install gem packages.



gem usage


RubyGems is very similar to apt-get, portage, yum and npm in functionality.


Installation:


gem install mygem

Uninstallation:


gem uninstall mygem

Listing installed gems:


gem list

Listing available gems, e.g.:


gem list --r

Create RDoc documentation for all gems:


gem rdoc --all

Adding a trusted certificate:[7]


gem cert -a 

Download but do not install a gem:


gem fetch mygem

Search available gems, e.g.:


gem search STRING --remote


gem package building


The gem command may also be used to build and maintain .gemspec and .gem files.


Build .gem from a .gemspec file:


gem build mygem.gemspec


Security Concerns


Since ruby gems run their own code in an application it may lead to various security issues due to installation of malicious gems. The creator of malicious gems may be able to compromise the user system or server.[8]


A number of methods have been developed to counter the security threat:




  • Cryptographic signing of gems since RubyGems version 0.8.11. The gem cert and gem install commands are used for this purpose.

  • New signing models such as X509 and OpenPGP have been proposed and are actively being discussed among Ruby experts.



See also




  • Ruby Version Manager

  • Package manager

  • Pip (package manager)

  • Npm (software)

  • LuaRocks



References





  1. ^ "174 Rubygems with Eric Hodel"..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:"""""""'""'"}.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}


  2. ^ "RubyGems Command Reference". guides.rubygems.org. Retrieved 2016-09-18.


  3. ^ "Ruby 1.9.1 changelog".


  4. ^ ab "Version history of RubyGems". GitHub. Retrieved 2016-09-18.


  5. ^ "Ruby 1.9.1 released". www.ruby-lang.org. Retrieved 2016-09-18.


  6. ^ "What is a gem? - RubyGems.org". guides.rubygems.org. Retrieved 2016-09-18.


  7. ^ "gem cert". guides.rubygems.org. Retrieved 2016-09-23.


  8. ^ "Security - RubyGems Guides". guides.rubygems.org. Retrieved 2016-09-23.




External links



  • Official Rubygems project page, including downloads

  • Official documentation of the Rubygems tool

  • Linux Journal article








Popular posts from this blog

Italian cuisine

Bulgarian cuisine

Carrot