<?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>11 Great Rails Libraries We Use for Every Project | Infinum</title>
		<atom:link href="https://infinum.com/blog/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project/feed/" rel="self" type="application/rss+xml" />
		<link>https://infinum.com/blog/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project/</link>
		<description>Building digital products</description>
		<lastBuildDate>Wed, 29 Apr 2026 14:21:05 +0000</lastBuildDate>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>

					<item>
				<image>
					<url>8101https://infinum.com/uploads/2015/07/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project-0.webp</url>
				</image>
				<title>A Gem for Every Occasion: 11 Great Rails Libraries We Use on Every Project</title>
				<link>https://infinum.com/blog/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project/</link>
				<pubDate>Wed, 11 Mar 2015 09:21:00 +0000</pubDate>
				<dc:creator>Stjepan Hadjić</dc:creator>
				<guid isPermaLink="false">https://infinum.com/the-capsized-eight/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project/</guid>
				<description>
					<![CDATA[<p>In the Ruby world, these gems are created on a daily basis, but only some of them are good enough to win our hearts.</p>
<p>The post <a href="https://infinum.com/blog/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project/">A Gem for Every Occasion: 11 Great Rails Libraries We Use on Every Project</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</description>
				<content:encoded>
					<![CDATA[<div
	class="wrapper"
	data-id="es-196"
	 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 you work with your favorite programming language, you often look for tools to make your job easier. In the Ruby world, these tools (gems) are created on a daily basis, but only some of them are good enough to win our hearts.</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-paragraph" data-id="es-96">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-97'
	>
	Here are some of the core gems that have a special place in all of our Gemfiles. Some of them help with debugging code, others provide certain functionality like authentication. That’s useful in almost any project. In the end, they all help us work faster and produce quality software.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-101"
	 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-99"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-100">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2015/07/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project-1.webp"
					class="image__img block-media__image-img"
					alt=""
										height="384"
															width="720"
										loading="lazy"
					 />
					</picture>

	</figure></div></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">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-103'
	>
	1. <a href="https://github.com/charliesome/better_errors">better_errors</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-107"
	 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-105"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-106">
	<picture class="image__picture block-media__image-picture">
								
			<source
				srcset=https://infinum.com/uploads/2015/06/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project-2-1400x814.webp				media='(max-width: 699px)'
				type=image/webp								height="814"
												width="1400"
				 />
								
			<source
				srcset=https://infinum.com/uploads/2015/06/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project-2-2400x1395.webp				media='(max-width: 1199px)'
				type=image/webp								height="1395"
												width="2400"
				 />
								
			<source
				srcset=https://infinum.com/uploads/2015/06/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project-2-3000x1743.webp				media='(max-width: 1999px)'
				type=image/webp								height="1743"
												width="3000"
				 />
												<img
					src="https://infinum.com/uploads/2015/06/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project-2.webp"
					class="image__img block-media__image-img"
					alt=""
										height="1806"
															width="3108"
										loading="lazy"
					 />
					</picture>

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

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-110"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-108">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-109'
	>
	2. <a href="https://github.com/plataformatec/devise">devise</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-113"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-111">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-112'
	>
	Whether you need simple HTTP authentication, or you’re looking for some complex Facebook and Google+ login system, this authentication solution is great and it will significantly speed up your work. It’s built on top of the Rails MVC stack and its modular architecture allows you to pick what you need.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-115"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-ruby github-light" data-language="ruby" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">class</span><span class="token"> </span><span class="token" style="color: #6f42c1;">User</span><span class="token"> </span><span class="token">&lt;</span><span class="token"> </span><span class="token" style="color: #6f42c1;">ActiveRecord</span><span class="token" style="color: #6f42c1;">::</span><span class="token" style="color: #6f42c1;">Base</span><span class="token">
</span></span><span class="line"><span class="token">  devise </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">database_authenticatable</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">registerable</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">confirmable</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">recoverable</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">stretches</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #005cc5;">20</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-118"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-116">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-117'
	>
	3. <a href="https://github.com/CanCanCommunity/cancancan">cancancan</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-121"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-119">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-120'
	>
	The successor of the abandoned <a href="https://github.com/ryanb/cancan">cancan</a> project, this authorization gem lets you define what a user can do on your website by using abilities defined in a single place.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-123"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-ruby github-light" data-language="ruby" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">class</span><span class="token"> </span><span class="token" style="color: #6f42c1;">Ability</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #d73a49;">include</span><span class="token"> </span><span class="token" style="color: #005cc5;">CanCan</span><span class="token">::</span><span class="token" style="color: #005cc5;">Ability</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #d73a49;">def</span><span class="token"> </span><span class="token" style="color: #6f42c1;">initialize</span><span class="token">(</span><span class="token">user</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #e36209;">user</span><span class="token"> </span><span class="token" style="color: #d73a49;">||=</span><span class="token"> </span><span class="token" style="color: #005cc5;">User</span><span class="token">.</span><span class="token" style="color: #d73a49;">new</span><span class="token"> </span><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;"> guest user (not logged in)</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #d73a49;">if</span><span class="token"> user</span><span class="token">.</span><span class="token" style="color: #6f42c1;">admin?</span><span class="token">
</span></span><span class="line"><span class="token">      can </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">manage</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">all</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #d73a49;">else</span><span class="token">
</span></span><span class="line"><span class="token">      can </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">read</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">all</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-126"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-124">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-125'
	>
	In newer projects we started experimenting with <a href="https://github.com/elabs/pundit">pundit</a>. It is faster, more modular and it wont bloat a single file.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-129"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-127">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-128'
	>
	4. <a href="https://github.com/collectiveidea/delayed_job">delayed_job</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-132"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-130">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-131'
	>
	We find this gem to be the best when you need to extract some longer-running actions (e.g., sending newsletters to a large number of users) into a background task. You can reuse methods from your models, or you can create complex classes for all your background task needs. With delayed_job, even <a href="https://infinum.com/blog/progress-bar-in-rails/">progress bars</a> are possible in Ruby on Rails.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-134"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-ruby github-light" data-language="ruby" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;"> without delayed_job</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token" style="color: #005cc5;">Notifier</span><span class="token">.</span><span class="token" style="color: #6f42c1;">signup</span><span class="token">(</span><span class="token" style="color: #24292e;">@</span><span class="token" style="color: #24292e;">user</span><span class="token">)</span><span class="token">.</span><span class="token" style="color: #6f42c1;">deliver</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;"> with delayed_job</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token" style="color: #005cc5;">Notifier</span><span class="token">.</span><span class="token" style="color: #6f42c1;">delay</span><span class="token">.</span><span class="token" style="color: #6f42c1;">signup</span><span class="token">(</span><span class="token" style="color: #24292e;">@</span><span class="token" style="color: #24292e;">user</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;"> with delayed_job running at a specific time</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token" style="color: #005cc5;">Notifier</span><span class="token">.</span><span class="token" style="color: #6f42c1;">delay</span><span class="token">(</span><span class="token" style="color: #005cc5;">run_at</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #005cc5;">5</span><span class="token">.</span><span class="token" style="color: #6f42c1;">minutes</span><span class="token">.</span><span class="token" style="color: #6f42c1;">from_now</span><span class="token">)</span><span class="token">.</span><span class="token" style="color: #6f42c1;">signup</span><span class="token">(</span><span class="token" style="color: #24292e;">@</span><span class="token" style="color: #24292e;">user</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-137"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-135">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-136'
	>
	5. <a href="https://github.com/ryanb/letter_opener">letter_opener</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-140"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-138">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-139'
	>
	It’s quite annoying to set up email delivery in a development environment, and that’s where Letter Opener is great. It displays the email in your browser so you can easily inspect it, click any links (e.g., account confirmation) and not spam your email account with tons of test emails.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-143"
	 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-141"
	 data-media-type='image'>

	<figure class="image block-media__image-figure image--size-stretch" data-id="es-142">
	<picture class="image__picture block-media__image-picture">
												<img
					src="https://infinum.com/uploads/2014/10/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project-3.webp"
					class="image__img block-media__image-img"
					alt=""
										height="654"
															width="1155"
										loading="lazy"
					 />
					</picture>

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

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-146"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-144">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-145'
	>
	6. <a href="https://github.com/mina-deploy/mina">mina</a></h3></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'
	>
	Easily configured, this gem allows you to do fast remote deployments of you website, as multiple environments are supported and all the work is done in only one SSH session (compared to Capistrano’s multiple SSH sessions). For more info, check out this article about <a href="https://infinum.com/blog/faster-web-application-deployments-using-mina-instead-of-capistrano/">Mina</a>, written by my colleague Gabrijel Škoro.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-151"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-shellscript github-light" data-language="shellscript" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token"> 
</span></span><span class="line"><span class="token" style="color: #6f42c1;">➜</span><span class="token">  </span><span class="token" style="color: #032f62;">project g</span><span class="token" style="color: #032f62;">it:(m</span><span class="token" style="color: #6f42c1;">aster</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #032f62;">✗ min</span><span class="token" style="color: #032f62;">a pro</span><span class="token" style="color: #032f62;">duction dep</span><span class="token" style="color: #032f62;">loy
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Creating</span><span class="token"> </span><span class="token" style="color: #032f62;">a</span><span class="token"> </span><span class="token" style="color: #032f62;">temporary</span><span class="token"> </span><span class="token" style="color: #032f62;">build</span><span class="token"> </span><span class="token" style="color: #032f62;">path</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Fetching</span><span class="token"> </span><span class="token" style="color: #032f62;">new</span><span class="token"> </span><span class="token" style="color: #032f62;">git</span><span class="token"> </span><span class="token" style="color: #032f62;">commits</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Using</span><span class="token"> </span><span class="token" style="color: #032f62;">git</span><span class="token"> </span><span class="token" style="color: #032f62;">branch</span><span class="token"> </span><span class="token" style="color: #032f62;">’master’    </span><span class="token">    </span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #6f42c1;">Cloning</span><span class="token"> </span><span class="token" style="color: #032f62;">into</span><span class="token"> </span><span class="token" style="color: #032f62;">’.’... 
</span></span><span class="line"><span class="token">       done. 
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Using</span><span class="token"> </span><span class="token" style="color: #032f62;">this</span><span class="token"> </span><span class="token" style="color: #032f62;">git</span><span class="token"> </span><span class="token" style="color: #032f62;">commit</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #6f42c1;">user</span><span class="token"> (0695b54</span><span class="token">): 
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #d73a49;">&gt;</span><span class="token"> </span><span class="token" style="color: #6f42c1;">increase</span><span class="token"> </span><span class="token" style="color: #032f62;">credits</span><span class="token"> </span><span class="token" style="color: #032f62;">after</span><span class="token"> </span><span class="token" style="color: #032f62;">manual</span><span class="token"> </span><span class="token" style="color: #032f62;">order</span><span class="token"> </span><span class="token" style="color: #032f62;">update</span><span class="token"> </span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Symlinking</span><span class="token"> </span><span class="token" style="color: #032f62;">shared</span><span class="token"> </span><span class="token" style="color: #032f62;">paths</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Installing</span><span class="token"> </span><span class="token" style="color: #032f62;">gem</span><span class="token"> </span><span class="token" style="color: #032f62;">dependencies</span><span class="token"> </span><span class="token" style="color: #032f62;">using</span><span class="token"> </span><span class="token" style="color: #032f62;">Bundler</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;"> list of gems ommited
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #6f42c1;">Your</span><span class="token"> </span><span class="token" style="color: #032f62;">bundle</span><span class="token"> </span><span class="token" style="color: #032f62;">is</span><span class="token"> </span><span class="token" style="color: #032f62;">complete!</span><span class="token"> </span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #6f42c1;">Gems</span><span class="token"> </span><span class="token" style="color: #032f62;">in</span><span class="token"> </span><span class="token" style="color: #032f62;">the</span><span class="token"> </span><span class="token" style="color: #032f62;">groups</span><span class="token"> </span><span class="token" style="color: #032f62;">development</span><span class="token"> </span><span class="token" style="color: #032f62;">and</span><span class="token"> </span><span class="token" style="color: #032f62;">test</span><span class="token"> </span><span class="token" style="color: #032f62;">were</span><span class="token"> </span><span class="token" style="color: #032f62;">not</span><span class="token"> </span><span class="token" style="color: #032f62;">installed.</span><span class="token"> </span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #6f42c1;">It</span><span class="token"> </span><span class="token" style="color: #032f62;">was</span><span class="token"> </span><span class="token" style="color: #032f62;">installed</span><span class="token"> </span><span class="token" style="color: #032f62;">into</span><span class="token"> </span><span class="token" style="color: #032f62;">./vendor/bundle</span><span class="token"> </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">DB</span><span class="token"> </span><span class="token" style="color: #032f62;">schema</span><span class="token"> </span><span class="token" style="color: #032f62;">unchanged</span><span class="token">;</span><span class="token"> </span><span class="token" style="color: #6f42c1;">skipping</span><span class="token"> </span><span class="token" style="color: #032f62;">DB</span><span class="token"> </span><span class="token" style="color: #032f62;">migration</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Skipping</span><span class="token"> </span><span class="token" style="color: #032f62;">asset</span><span class="token"> </span><span class="token" style="color: #032f62;">precompilation</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Cleaning</span><span class="token"> </span><span class="token" style="color: #032f62;">up</span><span class="token"> </span><span class="token" style="color: #032f62;">old</span><span class="token"> </span><span class="token" style="color: #032f62;">releases</span><span class="token"> (keeping</span><span class="token"> </span><span class="token" style="color: #005cc5;">5</span><span class="token">)        
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Build</span><span class="token"> </span><span class="token" style="color: #032f62;">finished</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Moving</span><span class="token"> </span><span class="token" style="color: #032f62;">build</span><span class="token"> </span><span class="token" style="color: #032f62;">to</span><span class="token"> </span><span class="token" style="color: #032f62;">releases/307</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Updating</span><span class="token"> </span><span class="token" style="color: #032f62;">the</span><span class="token"> </span><span class="token" style="color: #032f62;">current</span><span class="token"> </span><span class="token" style="color: #032f62;">symlink</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Launching</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Symlink</span><span class="token"> </span><span class="token" style="color: #032f62;">system</span><span class="token"> </span><span class="token" style="color: #032f62;">to</span><span class="token"> </span><span class="token" style="color: #032f62;">shared</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Restarting</span><span class="token"> </span><span class="token" style="color: #032f62;">application</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">-----</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">Done.</span><span class="token"> </span><span class="token" style="color: #032f62;">Deployed</span><span class="token"> </span><span class="token" style="color: #032f62;">v307</span><span class="token">        </span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #6f42c1;">Elapsed</span><span class="token"> </span><span class="token" style="color: #032f62;">time:</span><span class="token"> </span><span class="token" style="color: #005cc5;">2.00</span><span class="token"> </span><span class="token" style="color: #032f62;">seconds</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-154"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-152">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-153'
	>
	7. <a href="https://github.com/thoughtbot/paperclip">paperclip</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-157"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-155">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-156'
	>
	You often have to deal with attachments that need to be processed in various ways. With paperclip, that becomes quite simple (with the support of <a href="http://www.imagemagick.org">ImageMagick</a>) and allows you all sorts of validations and transformations, providing support for customizations as well.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-159"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-ruby github-light" data-language="ruby" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">class</span><span class="token"> </span><span class="token" style="color: #6f42c1;">User</span><span class="token"> </span><span class="token">&lt;</span><span class="token"> </span><span class="token" style="color: #6f42c1;">ActiveRecord</span><span class="token" style="color: #6f42c1;">::</span><span class="token" style="color: #6f42c1;">Base</span><span class="token">
</span></span><span class="line"><span class="token">  has_attached_file </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">avatar</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">styles</span><span class="token"> </span><span class="token">=&gt;</span><span class="token"> </span><span class="token">{</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">medium</span><span class="token"> </span><span class="token">=&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">300x300&gt;</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">thumb</span><span class="token"> </span><span class="token">=&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">100x100&gt;</span><span class="token" style="color: #032f62;">&quot;</span><span class="token"> </span><span class="token">}</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">default_url</span><span class="token"> </span><span class="token">=&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">/images/:style/missing.png</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">  validates_attachment_content_type </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">avatar</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">content_type</span><span class="token"> </span><span class="token">=&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">/</span><span class="token" style="color: #032f62;font-weight: bold;">\A</span><span class="token" style="color: #032f62;">image</span><span class="token" style="color: #032f62;font-weight: bold;">\/</span><span class="token" style="color: #032f62;">.*</span><span class="token" style="color: #032f62;font-weight: bold;">\Z</span><span class="token" style="color: #032f62;">/</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-162"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-160">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-161'
	>
	If you feel adventurous, you can try <a href="https://github.com/refile/refile">refile</a> from the creators of <a href="https://github.com/carrierwaveuploader/carrierwave">carrierwave</a>.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-165"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-163">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-164'
	>
	8. <a href="https://github.com/plataformatec/simple_form">simple_form</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-168"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-166">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-167'
	>
	Plain Rails generated forms (and related helpers) aren’t really that helpful when you’re designing a great user interface, which is essential for every website. This is where Simple Form saves the day with its powerful yet simple DSL.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-170"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-haml github-light" data-language="haml" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token">=</span><span class="token"> simple_form_for </span><span class="token" style="color: #24292e;">@</span><span class="token" style="color: #24292e;">user</span><span class="token"> </span><span class="token" style="color: #d73a49;">do</span><span class="token"> </span><span class="token" style="color: #d73a49;">|</span><span class="token">f</span><span class="token">|
</span></span><span class="line"><span class="token">  </span><span class="token">=</span><span class="token"> f</span><span class="token">.</span><span class="token" style="color: #6f42c1;">input</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">username</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">label</span><span class="token" style="color: #005cc5;">:</span><span class="token"> ’</span><span class="token" style="color: #005cc5;">Your</span><span class="token"> username please’</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token">=</span><span class="token"> f</span><span class="token">.</span><span class="token" style="color: #6f42c1;">input</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">password</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">hint</span><span class="token" style="color: #005cc5;">:</span><span class="token"> ’</span><span class="token" style="color: #005cc5;">No</span><span class="token"> special characters</span><span class="token">.</span><span class="token">’</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token">=</span><span class="token"> f</span><span class="token">.</span><span class="token" style="color: #6f42c1;">input</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">email</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">placeholder</span><span class="token" style="color: #005cc5;">:</span><span class="token"> ’user</span><span class="token" style="color: #24292e;">@</span><span class="token" style="color: #24292e;">domain</span><span class="token">.</span><span class="token" style="color: #6f42c1;">com</span><span class="token">’</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token">=</span><span class="token"> f</span><span class="token">.</span><span class="token" style="color: #6f42c1;">input</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">remember_me</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">inline_label</span><span class="token" style="color: #005cc5;">:</span><span class="token"> ’</span><span class="token" style="color: #005cc5;">Yes</span><span class="token">,</span><span class="token"> remember me’</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token">=</span><span class="token"> f</span><span class="token">.</span><span class="token" style="color: #6f42c1;">button</span><span class="token"> </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">submit</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-173"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-171">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-172'
	>
	9. <a href="https://github.com/rspec/rspec-rails">rspec-rails</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-176"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-174">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-175'
	>
	If you’re doing testing (and you should!), this gem helps you to easily integrate rspec framework into your Rails project by generating the necessary configuration files and spec helpers.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-178"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-ruby github-light" data-language="ruby" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #d73a49;">require</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">spec_helper</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">describe </span><span class="token" style="color: #005cc5;">User</span><span class="token"> </span><span class="token" style="color: #d73a49;">do</span><span class="token">
</span></span><span class="line"><span class="token">  it </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">orders by last name</span><span class="token" style="color: #032f62;">&quot;</span><span class="token"> </span><span class="token" style="color: #d73a49;">do</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #e36209;">lindeman</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #005cc5;">User</span><span class="token">.</span><span class="token" style="color: #6f42c1;">create!</span><span class="token">(</span><span class="token" style="color: #005cc5;">first_name</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">Andy</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">last_name</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">Lindeman</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #e36209;">chelimsky</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #005cc5;">User</span><span class="token">.</span><span class="token" style="color: #6f42c1;">create!</span><span class="token">(</span><span class="token" style="color: #005cc5;">first_name</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">David</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">last_name</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">Chelimsky</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #6f42c1;">expect</span><span class="token">(</span><span class="token" style="color: #005cc5;">User</span><span class="token">.</span><span class="token" style="color: #6f42c1;">ordered_by_last_name</span><span class="token">)</span><span class="token">.</span><span class="token" style="color: #6f42c1;">to</span><span class="token"> </span><span class="token" style="color: #6f42c1;">eq</span><span class="token">(</span><span class="token">[</span><span class="token">chelimsky</span><span class="token">,</span><span class="token"> lindeman</span><span class="token">]</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-181"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-179">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-180'
	>
	10. <a href="https://github.com/thoughtbot/factory_girl_rails">factory_girl_rails</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-184"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-182">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-183'
	>
	When testing your projects, you need data. The best way to generate test data is to use a factory generator. The factory_girl_rails gem helps you to easily integrate Factory Girl, our favorite factory generator, into your Rails projects.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-186"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-ruby github-light" data-language="ruby" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;"> spec/factories/user.rb</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token" style="color: #005cc5;">FactoryGirl</span><span class="token">.</span><span class="token" style="color: #6f42c1;">define</span><span class="token"> </span><span class="token" style="color: #d73a49;">do</span><span class="token">
</span></span><span class="line"><span class="token">  factory </span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">user</span><span class="token"> </span><span class="token" style="color: #d73a49;">do</span><span class="token">
</span></span><span class="line"><span class="token">    first_name </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">Andy</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">    last_name  </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">Lindeman</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;"> spec/models/user_spec.rb</span><span class="token" style="color: #6a737d;">
</span></span><span class="line"><span class="token" style="color: #d73a49;">require</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">spec_helper</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">describe </span><span class="token" style="color: #005cc5;">User</span><span class="token"> </span><span class="token" style="color: #d73a49;">do</span><span class="token">
</span></span><span class="line"><span class="token">  it </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">orders by last name</span><span class="token" style="color: #032f62;">&quot;</span><span class="token"> </span><span class="token" style="color: #d73a49;">do</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #e36209;">lindeman</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #6f42c1;">create</span><span class="token">(</span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">user</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #e36209;">chelimsky</span><span class="token"> </span><span class="token" style="color: #d73a49;">=</span><span class="token"> </span><span class="token" style="color: #6f42c1;">create</span><span class="token">(</span><span class="token" style="color: #005cc5;">:</span><span class="token" style="color: #005cc5;">user</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">first_name</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">David</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #005cc5;">last_name</span><span class="token" style="color: #005cc5;">:</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">Chelimsky</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #6f42c1;">expect</span><span class="token">(</span><span class="token" style="color: #005cc5;">User</span><span class="token">.</span><span class="token" style="color: #6f42c1;">ordered_by_last_name</span><span class="token">)</span><span class="token">.</span><span class="token" style="color: #6f42c1;">to</span><span class="token"> </span><span class="token" style="color: #6f42c1;">eq</span><span class="token">(</span><span class="token">[</span><span class="token">chelimsky</span><span class="token">,</span><span class="token"> lindeman</span><span class="token">]</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #d73a49;">end</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-189"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-heading" data-id="es-187">
	<h3	class='typography typography--size-36-text js-typography block-heading__heading'
	data-id='es-188'
	>
	11. <a href="https://github.com/rweng/pry-rails">pry-rails</a></h3></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-192"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-paragraph" data-id="es-190">
	<p	class='typography typography--size-16-text-roman js-typography block-paragraph__paragraph'
	data-id='es-191'
	>
	Debug your code like a champ. With pry, you can see what went wrong in any part of your Rails project, in your tests, third-party gems, and it can even be used in the Rails console.</p></div>	</div>

<div
	class="wrapper wrapper__use-simple--true"
	data-id="es-194"
	 data-animation='slideFade' data-animation-target='inner-items'>
		
			<div class="block-code">
	<pre class="phiki language-shellscript github-light" data-language="shellscript" style="background-color: #fff;color: #24292e;"><code><span class="line"><span class="token" style="color: #6f42c1;">Started</span><span class="token"> </span><span class="token" style="color: #032f62;">GET</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">/</span><span class="token" style="color: #032f62;">&quot;</span><span class="token"> </span><span class="token" style="color: #032f62;">for</span><span class="token"> </span><span class="token" style="color: #005cc5;">127.0.0.1</span><span class="token"> </span><span class="token" style="color: #032f62;">at</span><span class="token"> </span><span class="token" style="color: #032f62;">2014-10-24</span><span class="token"> </span><span class="token" style="color: #032f62;">09:57:12</span><span class="token"> </span><span class="token" style="color: #032f62;">+0200</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">Processing</span><span class="token"> </span><span class="token" style="color: #032f62;">by</span><span class="token"> </span><span class="token" style="color: #032f62;">HomeController#index</span><span class="token"> </span><span class="token" style="color: #032f62;">as</span><span class="token"> </span><span class="token" style="color: #032f62;">HTML</span><span class="token">
</span></span><span class="line"><span class="token">  </span><span class="token" style="color: #6f42c1;">User</span><span class="token"> </span><span class="token" style="color: #032f62;">Load</span><span class="token"> (0.5ms</span><span class="token">)  SELECT  </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">users</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">.</span><span class="token" style="color: #d73a49;">*</span><span class="token"> FROM </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">users</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">  WHERE </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">users</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">.</span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">id</span><span class="token" style="color: #032f62;">&quot;</span><span class="token"> = 1  ORDER BY </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">users</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">.</span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">id</span><span class="token" style="color: #032f62;">&quot;</span><span class="token"> ASC LIMIT 1
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #6f42c1;">From:</span><span class="token"> </span><span class="token" style="color: #032f62;">/Users/stef/dev/gluposti/blogs/app/controllers/home_controller.rb</span><span class="token"> </span><span class="token" style="color: #032f62;">@</span><span class="token"> </span><span class="token" style="color: #032f62;">line</span><span class="token"> </span><span class="token" style="color: #005cc5;">4</span><span class="token"> </span><span class="token" style="color: #032f62;">HomeController#index:</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #6f42c1;">2:</span><span class="token"> </span><span class="token" style="color: #032f62;">def</span><span class="token"> </span><span class="token" style="color: #032f62;">index</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #6f42c1;">3:</span><span class="token">   </span><span class="token" style="color: #032f62;">@user</span><span class="token"> </span><span class="token" style="color: #032f62;">=</span><span class="token"> </span><span class="token" style="color: #032f62;">current_user</span><span class="token">
</span></span><span class="line"><span class="token"> </span><span class="token" style="color: #032f62;">=</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">4:</span><span class="token">   </span><span class="token" style="color: #032f62;">binding.pry</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #6f42c1;">5:</span><span class="token"> </span><span class="token" style="color: #032f62;">end</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">[</span><span class="token">1</span><span class="token">]</span><span class="token"> pry(</span><span class="token">#&lt;HomeController&gt;)&gt; current_user
</span></span><span class="line"><span class="token" style="color: #032f62;">=</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #6a737d;">#</span><span class="token" style="color: #6a737d;">&lt;User id: 1, email: &quot;admin@infinum.co&quot;, encrypted_password: &quot;$2a$10$AR/1ZnYJS5hqFNtDzx3ZGuGlRlinktNPebsp6Ye5ENn...&quot;, reset_password_token: &quot;5e116a7fd356c11cccfcf27ab981e19b5a756dd7c6f2bd64ba...&quot;, reset_password_sent_at: &quot;2014-10-24 07:32:34&quot;, remember_created_at: nil, sign_in_count: 2, current_sign_in_at: &quot;2014-10-24 07:57:12&quot;, last_sign_in_at: &quot;2014-10-24 07:25:25&quot;, current_sign_in_ip: &quot;127.0.0.1&quot;, last_sign_in_ip: &quot;127.0.0.1&quot;, created_at: &quot;2014-10-24 07:25:25&quot;, updated_at: &quot;2014-10-24 07:57:12&quot;&gt;
</span></span><span class="line"><span class="token">[</span><span class="token">2</span><span class="token">]</span><span class="token"> pry(</span><span class="token">#&lt;HomeController&gt;)&gt; cd @user
</span></span><span class="line"><span class="token">[</span><span class="token">3</span><span class="token">]</span><span class="token"> </span><span class="token" style="color: #6f42c1;">pry(#</span><span class="token">&lt;User&gt;</span><span class="token">):</span><span class="token" style="color: #d73a49;">1&gt;</span><span class="token"> email
</span></span><span class="line"><span class="token" style="color: #032f62;">=</span><span class="token">&gt;</span><span class="token"> </span><span class="token" style="color: #032f62;">&quot;</span><span class="token" style="color: #032f62;">admin@infinum.co</span><span class="token" style="color: #032f62;">&quot;</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span></code></pre></div>	</div>
</div>
</div>		</div>
	</div><p>The post <a href="https://infinum.com/blog/a-gem-for-every-occasion-11-great-ruby-libraries-we-use-on-every-project/">A Gem for Every Occasion: 11 Great Rails Libraries We Use on Every Project</a> appeared first on <a href="https://infinum.com">Infinum</a>.</p>
]]>
				</content:encoded>
			</item>
		
	</channel>
</rss>