<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
	<channel>
		<title>Here to Stay Analyzing RubyGems Stats for 2018 | Infinum</title>
		<atom:link href="https://infinum.com/blog/analyzing-rubygems-stats-v2018/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/analyzing-rubygems-stats-v2018/</link>
		<description>Building digital products</description>
		<lastBuildDate>Fri, 17 Apr 2026 13:59:15 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>7909https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-0.webp</url>
				</image>
				<title>Here to Stay  Analyzing RubyGems Stats for 2018</title>
				<link>https://infinum.com/blog/analyzing-rubygems-stats-v2018/</link>
				<pubDate>Tue, 22 Jan 2019 18:50:00 +0000</pubDate>
				<dc:creator>Nikola Buhiniček</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/analyzing-rubygems-stats-v2018/</guid>
				<description>
					<![CDATA[<p>We have done our research and compiled some statistics about Ruby’s 2018 lifeline that might help you.</p>
<p>The post <a href="https://infinum.com/blog/analyzing-rubygems-stats-v2018/">Here to Stay  Analyzing RubyGems Stats for 2018</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-289"
	 data-animation-target='inner-items'>
		
			<div class="wrapper__inner">
			<div class="block-blog-content js-block-blog-content">
	
<div class="block-blog-content-sidebar" data-id="es-92">
	</div>

<div class="block-blog-content-main">
	
<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-95"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-93">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-94'
	>
	As years go by, there is always a question of whether Ruby is dead or alive, and as usual, we have done our research and compiled some statistics about Ruby’s 2018 lifeline that might help you find an answer.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-98"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-96"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-97">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="625"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-99">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-100'
	>
	2018 was an interesting year in terms of gems. Some increased, and some decreased their download numbers. Some were well maintained, while others could have used a helping hand. We have also seen a few newcomers that almost made it to the top of their categories. As for the language itself, at the end of 2018, <a href="https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-released/">Ruby 2.6</a> was released, getting us a few steps closer to achieving the <a href="https://blog.heroku.com/ruby-3-by-3">Ruby 3×3 goals</a>. The most notable improvement in this release was the brand new (experimental) <a href="https://medium.com/@k0kubun/ruby-2-6-jit-progress-and-future-84e0a830ecbf">JIT compiler</a> that should boost the performance of Ruby programs.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-104"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-102">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-103'
	>
	Sources</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-105">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-106'
	>
	The data used for generating the statistics below were obtained from two sources – the latest RubyGems <a href="https://rubygems.org/pages/data">PG-dump</a> and <a href="http://bestgems.org/">BestGems</a>. The latter keeps track of all daily gem downloads and exposes this data through their API. Having that and <a href="https://github.com/vr4b4c">Vedran’s</a> awesome <a href="https://gist.github.com/NBuhinicek/c2373ed296d0033a56849a0a2024148b">script</a>, which made it pretty easy to browse through the numbers, we have compared some of the most used gems.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-108">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-109'
	>
	Bear in mind that some of these downloads are a direct result of gem dependencies, non-cached CI builds, and gem mirroring services. There is still a strong correlation between the number of gem downloads and the number of its active users, but we feel it’s important to make it clear that these two numbers are not exactly the same.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-111">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-112'
	>
	Gem creation &amp; releases</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-116"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-114"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-115">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="491"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-119"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-117">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-118'
	>
	Unfortunately, this was another year in a row that the creation of new gems decreased even further. That’s not so surprising after all because there already is a huge number of gems that are well-known, well-maintained, and cover a lot of common use cases. To make a new gem in a field that’s already well covered is a real quest, but not impossible. Further down, we will introduce a gem that managed to make a huge dent in the JSON:API field.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-122"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-120"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-121">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-3.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-125"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-123">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-124'
	>
	As for the creation of gems, a downhill trend is also evident in the number of gem releases. But you can’t get one without the other. Older and well-maintained gems usually get a few new minor releases and a major release in a calendar year. Newer gems that are still in infancy usually have more code churn, breaking changes, and consequently releases.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-128"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-126">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-127'
	>
	Rails downloads</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-131"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-129"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-130">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-4.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-132">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-133'
	>
	In 2018, the number of <a href="https://github.com/rails/rails">Rails</a> downloads had increased again. It had its ups and downs, but it held around the 3 million download mark. As the end of the year came, we heard a lot about the new major release, <a href="https://edgeguides.rubyonrails.org/6_0_release_notes.html">Rails 6</a>. People jumped on the hype train raising the number of monthly downloads to almost 4 million.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-135">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-136'
	>
	<a href="https://github.com/rails/rails/pull/34786">Action Mailbox</a>, <a href="https://github.com/rails/rails/pull/34873">Action Text</a>, and parallel testing are the most anticipated additions, but there will be more improvements included in Rails 6. We will need to be patient though, as the release is scheduled for the end of April 2019.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-140"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-138">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-139'
	>
	Other web frameworks</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-143"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-141">
	<h4	class='typography typography--size-24-text js-typography block-heading__heading'
	data-id='es-142'
	>
	Sinatra – still falling behind</h4></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-146"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-144"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-145">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-5.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-149"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-147">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-148'
	>
	When <a href="https://github.com/sinatra/sinatra">Sinatra</a> got a new maintainer in 2017, and they pushed a new <a href="http://sinatrarb.com/2017/05/15/sinatra-two-point-oh.html">2.0 release</a>, things started to look better and the upward trend continued into 2018 as well. Having just five patches throughout the year, they reached 1,5 million downloads as their monthly standard, pushing it to the all-time high of just above 2 million downloads at the end of 2018.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-152"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-150"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-151">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-6.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-155"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-153">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-154'
	>
	On the other side of the download spectre, <a href="https://github.com/padrino/padrino-framework">Padrino</a> yearly downloads fell by 10%, while <a href="https://github.com/hanami/hanami">Hanami</a> downloads increased by about 33%. Hanami’s core team is currently working on version 2.0, which could be something to look out for in 2019. Their download numbers are much lower compared to Rails and Sinatra but that doesn’t detract from the fact that there are people that find them more suitable for their use cases and see potential in their further development. Having options to choose from is always a positive thing.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-158"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-156">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-157'
	>
	Database adapters</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-161"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-159"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-160">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-7.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-164"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-162">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-163'
	>
	For PG and <a href="https://github.com/brianmario/mysql2">MySQL2</a> 2018 was a great year. PG managed to increase their numbers for 4, and MySQL2 for 5 million downloads. <a href="https://github.com/sparklemotion/sqlite3-ruby">SQLite3</a>, on the other hand, experienced a drastic drop to only one-third of the downloads made in 2017 (from 21 to 8 million yearly downloads).</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-167"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-165">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-166'
	>
	Application servers</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-170"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-168"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-169">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-8.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-173"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-171">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-172'
	>
	The situation here is pretty much the same as the year before.&nbsp;<a href="https://github.com/puma/puma" target="_blank" rel="noreferrer noopener">Puma</a>, the default server for Rails, is still in the number one spot. And&nbsp;<a href="https://github.com/macournoyer/thin" target="_blank" rel="noreferrer noopener">Thin</a>, with no new releases in the past year, actually made a 250 thousand drop.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-176"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-174"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-175">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-9.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-179"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-177">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-178'
	>
	<a href="https://bogomips.org/unicorn.git" target="_blank" rel="noreferrer noopener">Unicorn</a>, although better maintained than Thin, didn’t manage to increase the number of downloads compared to 2017. Developers behind <a href="https://github.com/phusion/passenger" target="_blank" rel="noreferrer noopener">Passenger</a>, on the other side, are putting a lot of work into new releases, having a <a href="https://github.com/phusion/passenger/releases/tag/release-6.0.0" target="_blank" rel="noreferrer noopener">6.0 version</a> released at the end of November and managing to triple their download numbers since 2017. They had a huge spike in the middle of the year, recording more downloads in one month than in the last two years combined.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-182"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-180">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-181'
	>
	Other ORMs</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-185"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-183"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-184">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-10.webp"
					class="image__img block-media__image-img"
					alt=""
										height="450"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-188"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-186">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-187'
	>
	2018 maybe wasn’t the best year for <a href="https://github.com/jeremyevans/sequel" target="_blank" rel="noreferrer noopener">Sequel</a>, as its downloads dropped by 14%. Sequel is well maintained and has a status that just a few gems have &#8211; 0 outstanding issues. Other than that, we could mention rom-rb, which is maybe not a strict ORM, but has the same uses. It had a small growth during the year, recording just over 90 thousand downloads.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-191"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-189">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-190'
	>
	Testing</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-194"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-192"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-193">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-11.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-197"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-195">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-196'
	>
	For&nbsp;<a href="https://github.com/rspec/rspec" target="_blank" rel="noreferrer noopener">RSpec</a>&nbsp;it seems that only the sky’s the limit. Its downloads more than doubled hitting almost 200 million. Even though it&#8217;s defined as a development dependency in a lot of gems, it&#8217;s not used as a runtime dependency that often. The vast majority of the downloads thus stem from actual project uses.&nbsp;<a href="https://github.com/seattlerb/minitest" target="_blank" rel="noreferrer noopener">Minitest</a>, on the other hand, gained a bit more popularity, although there are some open issues and the last release was just under 12 months ago. All in all, it’s great to see these numbers skyrocket because that just means that people are testing their programs more and that the testing culture is evolving even further.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-200"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-198">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-199'
	>
	Debugging</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-203"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-201"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-202">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-12.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-206"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-204">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-205'
	>
	It is inevitable that bugs will occur during software development, but we can examine them easily using the following gems. The downloads of <a href="https://github.com/pry/pry" target="_blank" rel="noreferrer noopener">pry</a>, <a href="https://github.com/ruby/irb" target="_blank" rel="noreferrer noopener">irb’s</a> number one enemy, jumped by 50%, but this number is eclipsed by the number of open issues &#8211; 177 as of writing this article. <a href="https://github.com/deivid-rodriguez/byebug" target="_blank" rel="noreferrer noopener">Byebug</a>, which is just below pry, has a download number that is growing even faster, presumably because they started 2018 by releasing <a href="https://github.com/deivid-rodriguez/byebug/releases/tag/v10.0.0" target="_blank" rel="noreferrer noopener">version 10.0</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-209"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-207">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-208'
	>
	Another interesting debugging tool – <a href="https://github.com/BetterErrors/better_errors">Better Errors</a>. They replaced the standard Rails error page with their own, where except the usual stacktrace, you can also debug your code as you were in a debugger. It had a consistent growth rate that continued into 2018 as well. Well maintained and released, it is a very helpful gem to have up your sleeve.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-212"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-210">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-211'
	>
	Background workers</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-215"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-213"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-214">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-13.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-218"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-216">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-217'
	>
	The situation here is the same as the year before.&nbsp;<a href="https://github.com/mperham/sidekiq/" target="_blank" rel="noreferrer noopener">Sidekiq</a>&nbsp;is way ahead of&nbsp;<a href="https://github.com/collectiveidea/delayed_job" target="_blank" rel="noreferrer noopener">Delayed::Job</a>&nbsp;and&nbsp;<a href="https://github.com/resque/resque" target="_blank" rel="noreferrer noopener">Resque</a>, by 10 million downloads.. By removing even more dependencies and constantly improving and releasing, Sidekiq has become much faster and leaner than its competitors. Resque dropped a&nbsp;<a href="https://github.com/resque/resque/releases/tag/v2.0.0" target="_blank" rel="noreferrer noopener">2.0 release</a>&nbsp;in November, but there are no spikes visible on our graph. Comparing it to Delayed::Job, their numbers matched each other throughout the year.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-221"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-219">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-220'
	>
	Authorization</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-224"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-222"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-223">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-14.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-227"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-225">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-226'
	>
	The authorization has been pretty stable too. CanCanCan is still in the lead, while Pundit came in second with 7 million downloads less. While CanCanCan’s downloads were falling through the year, Pundit’s, on the other hand, were stable until July and then started to increase. The reason for that is the 2.0 release, which Pundit fans had been waiting for more than two years. Pundit could take the cake and dethrone CanCanCan if the download trend continues into 2019.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-230"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-228">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-229'
	>
	Administration</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-233"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-231"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-232">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-15.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-236"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-234">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-235'
	>
	It was a big year for&nbsp;<a href="https://github.com/activeadmin/activeadmin" target="_blank" rel="noreferrer noopener">Active Admin</a>, its downloads doubled and it left&nbsp;<a href="https://github.com/sferik/rails_admin" target="_blank" rel="noreferrer noopener">Rails Admin</a>&nbsp;far behind. Both are still well maintained and follow similar release cycles.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-239"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-237">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-238'
	>
	JSON:API Specifications</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-242"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-240"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-241">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-16.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-245"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-243">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-244'
	>
	This is a big one. The most popular and talked-about gem in the&nbsp;<a href="https://jsonapi.org/" target="_blank" rel="noreferrer noopener">JSON:API</a>&nbsp;world,&nbsp;<a href="https://github.com/Netflix/fast_jsonapi" target="_blank" rel="noreferrer noopener">Fast JSON API</a>&nbsp;by Netflix, which was first released in February 2018, surpassed&nbsp;<a href="https://github.com/jsonapi-rb/jsonapi-rb" target="_blank" rel="noreferrer noopener">JSONAPI-rb</a>&nbsp;on a yearly download base, and it could soon become THE gem to use for JSON:API serialization. JSONAPI-rb missed a whole year in terms of releases, and at&nbsp;<a href="https://github.com/cerebris/jsonapi-resources" target="_blank" rel="noreferrer noopener">JSONAPI::Resources</a>, the issues slowly piling up. Having that in mind, it’s no wonder that there are ever more migrations to the newcomer, that is well maintained and cared for.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-248"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-246">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-247'
	>
	File uploaders</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-251"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-249"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-250">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-17.webp"
					class="image__img block-media__image-img"
					alt=""
										height="521"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-254"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-252">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-253'
	>
	2018 wasn&#8217;t the best year for <a href="https://github.com/carrierwaveuploader/carrierwave/" target="_blank" rel="noreferrer noopener">CarrierWave</a> and it was even worse for <a href="https://github.com/thoughtbot/paperclip" target="_blank" rel="noreferrer noopener">Paperclip</a>, which was <a href="https://robots.thoughtbot.com/closing-the-trombone" target="_blank" rel="noreferrer noopener">deprecated</a>. Both were well maintained, and released often, but they managed to get just 20-30% more downloads than in 2017. Finishing the year as equals and not actually growing that much are signs that something’s off.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-257"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-255">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-256'
	>
	The reason for that is just what we predicted last year as a possible game-changer – <a href="https://github.com/rails/rails/tree/v5.2.2/activestorage">Active Storage</a>. Available from Rails 5.2 onwards, it gained a lot of popularity and finished the year with 5 million downloads.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-260"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-258"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-259">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-18.webp"
					class="image__img block-media__image-img"
					alt=""
										height="450"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-263"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-261">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-262'
	>
	<a href="https://github.com/shrinerb/shrine" target="_blank" rel="noreferrer noopener">Shrine</a> is another great solution for file upload management. While the numbers seem low, having been downloaded just over 300 thousand times, it offers a lot of advantages over the more popular choices, with generality, simplicity, and modularity being at the forefront.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-266"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-264">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-265'
	>
	Aggregated stats for 2018</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-269"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-media">
	<div	class="media block-media__media media__border--none media__align--center-center"
	data-id="es-267"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-268">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2019/01/analyzing-rubygems-stats-v2018-19.webp"
					class="image__img block-media__image-img"
					alt=""
										height="374"
															width="1000"
										loading="lazy"
					 />
					</picture>

	</figure></div></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-272"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-270">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-271'
	>
	The number of Rails downloads continued to grow and reached 37,5 million. 29 new gems were published daily on average. 260 new gem releases were published daily on average. Taking into consideration just the gems mentioned in this post, total downloads jumped from 389,794,028 in 2017 to 499,035,801 in 2018.&nbsp;<strong>That’s a 28% increase in just one year!</strong></p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-275"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-273">
	<h2	class='typography typography--size-52-default js-typography block-heading__heading'
	data-id='es-274'
	>
	Conclusion</h2></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-278"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-276">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-277'
	>
	As in the previous years, 2018 was another successful year for Ruby, and if after all of these numbers, the state of Ruby is not clear to you, let us assure you that it is here to stay. We are not the only <a href="https://naturaily.com/blog/who-gives-f-about-rails">ones</a> that came to this conclusion.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-281"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-279">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-280'
	>
	With more than 3,700 contributors and new ones coming in on a daily basis, Rails is way ahead of, for example, Django, which has just over 1,600 contributors. That number of Rails backers just proves that Ruby has a strong community that is involved in Rails development and makes a lot of gems that in the end, help other developers build awesome applications better and faster.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-284"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-282">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-283'
	>
	Maybe Ruby isn’t the number one language to pick in terms of performance, as there are many more performant choices. But it is clear that performance is of great importance with the latest Ruby releases just by looking at the GC and JIT changes done by the Ruby Core team. Achieving the 3×3 promise (Ruby 3.0 being three times faster 2.0) thus seems closer by the day.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-287"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-285">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-286'
	>
	So, buckle up, as there are a lot of things about to change. </p></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/analyzing-rubygems-stats-v2018/">Here to Stay  Analyzing RubyGems Stats for 2018</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>