Your IP : 18.224.54.118
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CONTRIBUTING - rack-2.2.10 Documentation</title>
<script type="text/javascript">
var rdoc_rel_prefix = "./";
var index_rel_prefix = "./";
</script>
<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>
<link href="./css/fonts.css" rel="stylesheet">
<link href="./css/rdoc.css" rel="stylesheet">
<body id="top" role="document" class="file">
<nav role="navigation">
<div id="project-navigation">
<div id="home-section" role="region" title="Quick navigation" class="nav-section">
<h2>
<a href="./index.html" rel="home">Home</a>
</h2>
<div id="table-of-contents-navigation">
<a href="./table_of_contents.html#pages">Pages</a>
<a href="./table_of_contents.html#classes">Classes</a>
<a href="./table_of_contents.html#methods">Methods</a>
</div>
</div>
<div id="search-section" role="search" class="project-section initially-hidden">
<form action="#" method="get" accept-charset="utf-8">
<div id="search-field-wrapper">
<input id="search-field" role="combobox" aria-label="Search"
aria-autocomplete="list" aria-controls="search-results"
type="text" name="search" placeholder="Search" spellcheck="false"
title="Type to search, Up and Down to navigate, Enter to load">
</div>
<ul id="search-results" aria-label="Search Results"
aria-busy="false" aria-expanded="false"
aria-atomic="false" class="initially-hidden"></ul>
</form>
</div>
</div>
<div class="nav-section">
<h3>Table of Contents</h3>
<ul class="link-list" role="directory">
<li><a href="#label-Contributing+to+Rack">Contributing to Rack</a>
<li><a href="#label-Fork+the+Project">Fork the Project</a>
<li><a href="#label-Create+a+Topic+Branch">Create a Topic Branch</a>
<li><a href="#label-Bundle+Install+and+Quick+Test">Bundle Install and Quick Test</a>
<li><a href="#label-Running+All+Tests">Running All Tests</a>
<li><a href="#label-Write+Tests">Write Tests</a>
<li><a href="#label-Write+Code">Write Code</a>
<li><a href="#label-Write+Documentation">Write Documentation</a>
<li><a href="#label-Update+Changelog">Update Changelog</a>
<li><a href="#label-Commit+Changes">Commit Changes</a>
<li><a href="#label-Push">Push</a>
<li><a href="#label-Make+a+Pull+Request">Make a Pull Request</a>
<li><a href="#label-Rebase">Rebase</a>
<li><a href="#label-Make+Required+Changes">Make Required Changes</a>
<li><a href="#label-Check+on+Your+Pull+Request">Check on Your Pull Request</a>
<li><a href="#label-Be+Patient">Be Patient</a>
<li><a href="#label-Thank+You">Thank You</a>
</ul>
</div>
<div id="project-metadata">
<div id="fileindex-section" class="nav-section">
<h3>Pages</h3>
<ul class="link-list">
<li><a href="./CHANGELOG_md.html">CHANGELOG</a>
<li><a href="./CONTRIBUTING_md.html">CONTRIBUTING</a>
<li><a href="./README_rdoc.html">README</a>
</ul>
</div>
</div>
</nav>
<main role="main" aria-label="Page CONTRIBUTING.md">
<h1 id="label-Contributing+to+Rack">Contributing to <a href="Rack.html"><code>Rack</code></a><span><a href="#label-Contributing+to+Rack">¶</a> <a href="#top">↑</a></span></h1>
<p><a href="Rack.html"><code>Rack</code></a> is work of <a href="https://github.com/rack/rack/graphs/contributors">hundreds of contributors</a>. You're encouraged to submit <a href="https://github.com/rack/rack/pulls">pull requests</a>, <a href="https://github.com/rack/rack/issues">propose features and discuss issues</a>. When in doubt, post to the <a href="http://groups.google.com/group/rack-devel">rack-devel</a> mailing list.</p>
<h4 id="label-Fork+the+Project">Fork the Project<span><a href="#label-Fork+the+Project">¶</a> <a href="#top">↑</a></span></h4>
<p>Fork the <a href="https://github.com/rack/rack">project on Github</a> and check out your copy.</p>
<pre>git clone https://github.com/contributor/rack.git
cd rack
git remote add upstream https://github.com/rack/rack.git</pre>
<h4 id="label-Create+a+Topic+Branch">Create a Topic Branch<span><a href="#label-Create+a+Topic+Branch">¶</a> <a href="#top">↑</a></span></h4>
<p>Make sure your fork is up-to-date and create a topic branch for your feature or bug fix.</p>
<pre>git checkout master
git pull upstream master
git checkout -b my-feature-branch</pre>
<h4 id="label-Bundle+Install+and+Quick+Test">Bundle Install and Quick Test<span><a href="#label-Bundle+Install+and+Quick+Test">¶</a> <a href="#top">↑</a></span></h4>
<p>Ensure that you can build the project and run quick tests.</p>
<pre>bundle install --without extra
bundle exec rake test</pre>
<h4 id="label-Running+All+Tests">Running All Tests<span><a href="#label-Running+All+Tests">¶</a> <a href="#top">↑</a></span></h4>
<p>Install all dependencies.</p>
<pre class="ruby"><span class="ruby-identifier">bundle</span> <span class="ruby-identifier">install</span>
</pre>
<p>Run all tests.</p>
<pre class="ruby"><span class="ruby-identifier">rake</span> <span class="ruby-identifier">test</span>
</pre>
<p>The test suite has no dependencies outside of the core Ruby installation and bacon.</p>
<p>Some tests will be skipped if a dependency is not found.</p>
<p>To run the test suite completely, you need:</p>
<ul><li>
<p>fcgi</p>
</li><li>
<p>dalli</p>
</li><li>
<p>thin</p>
</li></ul>
<p>To test Memcache sessions, you need memcached (will be run on port 11211) and dalli installed.</p>
<h4 id="label-Write+Tests">Write Tests<span><a href="#label-Write+Tests">¶</a> <a href="#top">↑</a></span></h4>
<p>Try to write a test that reproduces the problem you're trying to fix or describes a feature that you want to build.</p>
<p>We definitely appreciate pull requests that highlight or reproduce a problem, even without a fix.</p>
<h4 id="label-Write+Code">Write Code<span><a href="#label-Write+Code">¶</a> <a href="#top">↑</a></span></h4>
<p>Implement your feature or bug fix.</p>
<p>Make sure that <code>bundle exec rake fulltest</code> completes without errors.</p>
<h4 id="label-Write+Documentation">Write Documentation<span><a href="#label-Write+Documentation">¶</a> <a href="#top">↑</a></span></h4>
<p>Document any external behavior in the <a href="README.rdoc">README</a>.</p>
<h4 id="label-Update+Changelog">Update Changelog<span><a href="#label-Update+Changelog">¶</a> <a href="#top">↑</a></span></h4>
<p>Add a line to <a href="CHANGELOG.md">CHANGELOG</a>.</p>
<h4 id="label-Commit+Changes">Commit Changes<span><a href="#label-Commit+Changes">¶</a> <a href="#top">↑</a></span></h4>
<p>Make sure git knows your name and email address:</p>
<pre>git config --global user.name "Your Name"
git config --global user.email "contributor@example.com"</pre>
<p>Writing good commit logs is important. A commit log should describe what changed and why.</p>
<pre>git add ...
git commit</pre>
<h4 id="label-Push">Push<span><a href="#label-Push">¶</a> <a href="#top">↑</a></span></h4>
<pre class="ruby"><span class="ruby-identifier">git</span> <span class="ruby-identifier">push</span> <span class="ruby-identifier">origin</span> <span class="ruby-identifier">my</span><span class="ruby-operator">-</span><span class="ruby-identifier">feature</span><span class="ruby-operator">-</span><span class="ruby-identifier">branch</span>
</pre>
<h4 id="label-Make+a+Pull+Request">Make a Pull Request<span><a href="#label-Make+a+Pull+Request">¶</a> <a href="#top">↑</a></span></h4>
<p>Go to <a href="https://github.com/contributor/rack">github.com/contributor/rack</a> and select your feature branch. Click the 'Pull Request' button and fill out the form. Pull requests are usually reviewed within a few days.</p>
<h4 id="label-Rebase">Rebase<span><a href="#label-Rebase">¶</a> <a href="#top">↑</a></span></h4>
<p>If you've been working on a change for a while, rebase with upstream/master.</p>
<pre>git fetch upstream
git rebase upstream/master
git push origin my-feature-branch -f</pre>
<h4 id="label-Make+Required+Changes">Make Required Changes<span><a href="#label-Make+Required+Changes">¶</a> <a href="#top">↑</a></span></h4>
<p>Amend your previous commit and force push the changes.</p>
<pre>git commit --amend
git push origin my-feature-branch -f</pre>
<h4 id="label-Check+on+Your+Pull+Request">Check on Your Pull Request<span><a href="#label-Check+on+Your+Pull+Request">¶</a> <a href="#top">↑</a></span></h4>
<p>Go back to your pull request after a few minutes and see whether it passed muster with Travis-CI. Everything should look green, otherwise fix issues and amend your commit as described above.</p>
<h4 id="label-Be+Patient">Be Patient<span><a href="#label-Be+Patient">¶</a> <a href="#top">↑</a></span></h4>
<p>It's likely that your change will not be merged and that the nitpicky maintainers will ask you to do more, or fix seemingly benign problems. Hang on there!</p>
<h4 id="label-Thank+You">Thank You<span><a href="#label-Thank+You">¶</a> <a href="#top">↑</a></span></h4>
<p>Please do know that we really appreciate and value your time and work. We love you, really.</p>
</main>
<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.2.1.1.
<p>Based on <a href="http://deveiate.org/projects/Darkfish-RDoc/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.
</footer>