Fetching contributors…
Cannot retrieve contributors at this time
306 lines (280 sloc) 11.7 KB
<title>Erector - For Developers</title>
<style>body, td, a, p {
font-family: Lucida Grande, Lucida Sans, arial, sans-serif;
font-size: 11pt; }
body {
margin: 0;
padding: 0; }
img {
border: none; }
.clear {
clear: both; }
ul {
list-style-position: inside; }
li {
margin-left: 1.5em;
padding-bottom: .5em; }
li > p {
-webkit-margin-before: 0;
-webkit-margin-after: 0; }
h1 {
/* font-variant: small-caps;*/
border-bottom: 1px solid gray;
/* background: #EEE; */
padding: .25em;
padding-left: 0px;
margin-left: 0px;
text-shadow: #999 1px 1px 1px; }
h2 {
margin-top: 2em;
background: #FEFEEB;
padding: .25em;
border: 1px solid #CCC;
text-shadow: #999 1px 1px 1px; }
pre {
background-color: #f4f4FF;
border: 1px solid gray;
padding: .5em 1em;
overflow: auto;
font-family: Inconsolata, Consolas, "Andale Mono", "Lucida Console", "Lucida Sans Typewriter", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Liberation Mono", "Nimbus Mono L", Monaco, "Courier New", Courier, monospace; }
pre.sh_html {
background-color: #FFFADE; }
code {
background-color: #F4F4FF;
font-size: 12pt; }
/* cheatsheet */
table.cheatsheet {
border-style: outset;
border-collapse: collapse;
font-size: 10pt; }
table.cheatsheet code {
background-color: #EEEEFF; }
table.cheatsheet i {
font-size: 11pt; }
table.cheatsheet th {
background-color: #EDEDED; }
table.cheatsheet td, table.cheatsheet th {
border-width: 1px;
border-style: solid;
border-color: lightgray;
padding: .5em;
font-size: 10pt; }
table.cheatsheet td {
vertical-align: top; }
.separator {
margin-right: 10px;
font-size: 36pt; }
/* top */ {
background-color: #FEFDCD;
/* background-color: #FDF909;
text-align: bottom;
margin: 0;
padding: 8px 8px 4px; } .logo {
margin: 2px auto; } .logo img {
opacity: 0.6; }
/* navbar */
div.navbar {
width: 100%;
margin: 0 0 2px;
padding: 8px 0px 11px;
/* no idea why, but this centers the buttons*/
overflow-vertical: auto;
text-align: left;
background-color: #A3D3D1;
border-top: 1px solid #6881BA;
border-bottom: 1px solid #6881BA; }
div.navbar h3 {
margin-bottom: .25em; }
div.navbar ul {
list-style-type: none;
display: inline;
margin: -1px 0px 0px;
padding: 8px 0px;
list-style-type: none; }
div.navbar li.clickable {
display: inline;
color: #ccdcea;
background-color: #3470a2;
list-style-type: none;
margin: 8px;
padding: 4px 6px;
/* font-variant: small-caps;*/
border: 2px solid #6881BA; }
div.navbar li.clickable a, div.navbar li.clickable a:visited {
text-decoration: none;
/*font-weight: bold;*/
color: white;
margin: 0;
font-size: 10pt; }
div.navbar li.clickable:hover {
background-color: blue;
cursor: pointer;
cursor: hand; }
div.navbar li.clickable.current {
font-weight: bold;
border: 2px solid black;
background-color: #3875D7; }
div.navbar li.clickable.current a {
color: white; }
/* main */
.main {
margin: 0 auto; }
.footer {
font-size: 10pt;
border-top: 1px solid black;
padding: 1em; }
.body {
max-width: 60em;
margin-left: 100px;
margin-right: 100px; }
.body a {
color: #6881BA;
text-decoration: none;
border-bottom: 1px dotted; }
.main h1.title {
margin: 0 200px;
text-align: center; }
/* article */
div.toc {
margin: 1em .25em;
display: inline-block;
border: 1px solid black; }
div.toc h2 {
margin: 0; }
div.toc ul, div.toc ol {
padding: .25em 1em; }
.promo_wrapper {
float: right; }
div.promo_wrapper {
text-align: center;
margin: 4px;
padding: 4px; } {
display: inline-block;
border: 2px solid #6881BA;
text-align: center;
background: white; } img {
border: 2px solid black;
margin: 2px; } p {
padding: .25em .5em; }
/* example */
div.example {
position: relative;
border: 2px solid darkblue;
margin: 1em;
padding: .5em; }
div.example .before, div.example .after {
margin: 1em;
text-align: top;
vertical-align: top; }
div.example .before pre, div.example .after pre {
margin: 0;
width: 100%; }
<script src="js/sh_main.min.js"></script>
<script src="js/sh_lang/sh_ruby.min.js"></script>
<script src="js/sh_lang/sh_html.min.js"></script>
<script src="js/sh_lang/sh_sh.min.js"></script>
<link href="css/sh_style.css" rel="stylesheet" type="text/css" />
<body onload="sh_highlightDocument();"> <a href=""><img style="position: absolute; top: 0; right: 0; border: 0;" src="" alt="Fork me on GitHub"></a>
<div class="top"> <div class="logo"><a href="index.html"><img src="erector-logo.png" /></a></div>
<div class="navbar"> <ul class="clickable">
<li class="clickable" onclick="document.location=&#39;index.html&#39;"><a href="index.html">Home</a></li>
<li class="clickable" onclick="document.location=&#39;userguide.html&#39;"><a href="userguide.html">User Guide</a></li>
<li class="clickable" onclick="document.location=&#39;rails.html&#39;"><a href="rails.html">Erector On Rails</a></li>
<li class="clickable" onclick="document.location=&#39;faq.html&#39;"><a href="faq.html">FAQ</a></li>
<li class="clickable" onclick="document.location=&#39;cheatsheet.html&#39;"><a href="cheatsheet.html">Cheatsheet</a></li>
<li class="clickable" onclick="document.location=&#39;rdoc&#39;"><a href="rdoc">RDoc API</a></li>
<li class="clickable current" onclick="document.location=&#39;developers.html&#39;"><a href="developers.html">For Developers</a></li>
<li class="clickable" onclick="document.location=&#39;release_notes.html&#39;"><a href="release_notes.html">Release Notes</a></li>
<li class="clickable" onclick="document.location=&#39;community.html&#39;"><a href="community.html">Community</a></li>
<div class="promo_wrapper"> <div class="promo"><img src="images/be-an-erector-engineer.jpeg" /></div>
<div class="main"> <div class="body">
<h1>Want to help develop Erector? Here&#39;s what to do.</h1>
<h2>Clone Erector from Github or create your own fork:</h2>
<pre>git clone git://
cd erector
<h2>Install gems:</h2>
<pre>bundle install
<h2>Run specs:</h2>
<h2>Check out the available rake tasks:</h2>
<pre>rake -T</pre>
<h2>Sign up for the mailing list:</h2>
<a href="">&#39;erector&#39; Google Group</a>
<h2>Watch the github repo at </h2>
<a href=""></a>
<h2>Join the Pivotal Tracker project at </h2>
<a href=""></a>
<h2>Basic read-only git usage</h2>
<p>First, install git. Then download erector using git:</p>
<pre>git clone git://</pre>
<p>Generate a diff between what you have edited and what you have run git add on:</p>
<pre>git diff</pre>
<p>Generate a diff between what you have run git add on and locally committed:</p>
<pre>git diff --cached</pre>
<p>Commit locally (into your .git directory):</p>
<pre>git commit -a</pre>
<p>You can update from the erector repository at github with:</p>
<pre>git pull</pre>
<p>However, since you have checked out git read-only, you cannot push back your changes with:</p>
<pre>git push</pre>
<p>Instead, mail a diff to the mailing list, or fork your own github repository and send a pull request.</p>
<h2>Read/write access</h2>
<p>The following instructions assume you have been listed as a collaborator on the github pivotal erector project.</p>
<p>First, install git. Then:</p>
<pre>git clone</pre>
<p>To push your changes back to the main git repository:</p>
<pre class="sh_sh">git commit -a
git pull
# Deal with merge issues if any.
git push
<p>To get other people&#39;s changes:</p>
<pre>git pull</pre>
<h2>Versioning and Release Policy</h2>
<li>Versions are of the form major.minor.tiny</li>
<li>Tiny revisions fix bugs or documentation</li>
<li>Minor revisions add API calls, or change behavior</li>
<li>Minor revisions may also remove API calls, but these must be clearly announced in History.txt, with instructions on how to migrate </li>
<li>Major revisions are about marketing more than technical needs. We will stay in major version 0 until we&#39;re happy taking the &quot;alpha&quot; label off it. And if we ever do a major overhaul of the API, especially one that breaks backwards compatibility, we will probably want to increment the major version.</li>
<li>Developers should attempt to add lines in History.txt to reflect their checkins. These should reflect feature-level changes, not just one line per checkin. The top section of History.txt is used as the Release Notes by the &quot;rake publish&quot; task and will appear on the RubyForge file page.</li>
<h2>How to push a release</h2>
<li>Pick a version number. Either increment the major, minor, or tiny version from the previous version.</li>
<li>Look at History.txt and make sure the release notes are up to date. Put the version number and today&#39;s date on the top line (after the &quot;==&quot;).</li>
<li>Put the new version number in <code>VERSION.yml</code> (not in <code>erector.gemspec</code>; that&#39;ll get changed on its own)</li>
<li>Commit these changes, e.g. &#39;git commit -a&#39;</li>
<li>Run &#39;rake package&#39; so that you can see whether the gem generation seems to work locally before proceeding to try to upload it to rubyforge (if you skip this step, the package will be generated when you run rake release)</li>
<li>If you haven&#39;t done so before, run &#39;rubyforge setup&#39; and &#39;rubyforge config&#39; (for more details on these steps, see README.txt in the rubyforge gem)</li>
<li>Run &#39;rake release VERSION=1.2.3&#39;. (The parameter is to confirm you&#39;re releasing the version you intend to.)</li>
<li>Run &#39;rake publish&#39; cause the docs and site need to be updated, at least with the new version number.</li>
<li>Immediately go into History.txt and make a new section at the top. Since we won&#39;t yet know what the next version will be called, the new section will be noted by a single &quot;==&quot; at the top of the file.</li>
<li>Send email to <a href="">erector Google Groups mailing list</a> announcing the new release.</li>
<div class="footer"><a href=""><img alt="Pivotal Labs" height="57" src="pivotal.gif" style="float:right; padding: 8px;" width="158" /></a>
<center>Erector is an open source project released under the MIT license.<br />
Its initial development was sponsored by <a href="">Pivotal Labs</a>.<br />
Not affiliated with or sponsored by the makers of Erector or Meccano toys.</center>