scratch/output/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/index.html
Yann Esposito (Yogsototh) f19c2a270a Regen
2012-01-20 14:41:44 +01:00

264 lines
No EOL
15 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="keywords" content="blog">
<link rel="shortcut icon" type="image/x-icon" href="/Scratch/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="/Scratch/assets/css/main.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/twilight.css" />
<link rel="stylesheet" type="text/css" href="/Scratch/css/idc.css" />
<link rel="alternate" type="application/rss+xml" title="RSS" href="http://feeds.feedburner.com/yannespositocomen"/>
<link rel="alternate" lang="fr" xml:lang="fr" title="Maintenant sur Heroku" type="text/html" hreflang="fr" href="/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/" />
<link rel="alternate" lang="en" xml:lang="en" title="Now hosted by heroku" type="text/html" hreflang="en" href="/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/" />
<script type="text/javascript" src="/Scratch/js/jquery-1.3.1.min.js"></script>
<script type="text/javascript" src="/Scratch/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/Scratch/js/index.js"></script>
<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
<title>Now hosted by heroku</title>
</head>
<body lang="en" class="article">
<script type="text/javascript">// <![CDATA[
document.write('<div id="blackpage"><img src="/Scratch/img/loading.gif" alt="loading..."/></div>');
// ]]>
</script>
<div id="content">
<div id="choix">
<div class="return"><a href="#entete">&darr; Menu &darr;</a></div>
<div id="choixlang">
<a href="/Scratch/fr/blog/2010-08-23-Now-heberged-on-heroku/" onclick="setLanguage('fr')">en Français</a>
</div>
<div class="flush"></div>
</div>
<div id="titre">
<h1>
Now hosted by heroku
</h1>
<h2>
Host static website on Heroku
</h2>
</div>
<div class="flush"></div>
<div class="flush"></div>
<div id="afterheader">
<div class="corps">
<h1 class="first" id="now-on-herokuhttpherokucom">Now on <a href="http://heroku.com">Heroku</a></h1>
<p>I now changed my hosting to <a href="http://heroku.com">Heroku</a>.
I believe it will be far more reliable.</p>
<p>But as you should know my website is completely static.
I use <a href="http://nanoc.stoneship.org/">nanoc</a> to generate it.
But here is the conf to make it work on heroku.</p>
<p>The root of my files is <code>/output</code>. You only need to create a <code>config.ru</code><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> file:</p>
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/code/config.ru"> &#x27A5; config.ru </a></div><div class="withfile">
<pre class="twilight">
<span class="Keyword">require</span> <span class="String"><span class="String">'</span>rubygems<span class="String">'</span></span>
<span class="Keyword">require</span> <span class="String"><span class="String">'</span>rack<span class="String">'</span></span>
<span class="Keyword">require</span> <span class="String"><span class="String">'</span>rack/contrib<span class="String">'</span></span>
<span class="Keyword">require</span> <span class="String"><span class="String">'</span>rack-rewrite<span class="String">'</span></span>
<span class="Keyword">require</span> <span class="String"><span class="String">'</span>mime/types<span class="String">'</span></span>
use <span class="Support">Rack</span>::<span class="Entity">ETag</span>
<span class="Keyword">module</span> ::<span class="Entity">Rack</span>
<span class="Keyword">class</span> <span class="Entity">TryStatic<span class="EntityInheritedClass"> <span class="EntityInheritedClass">&lt;</span> Static</span></span>
<span class="Keyword">def</span> <span class="Entity">initialize</span>(<span class="Variable">app<span class="Variable">,</span> options</span>)
<span class="Keyword">super</span>
<span class="Variable"><span class="Variable">@</span>try</span> <span class="Keyword">=</span> ([<span class="String"><span class="String">'</span><span class="String">'</span></span>] <span class="Keyword">+</span> <span class="Variable">Array</span>(options.<span class="Entity">delete</span>(<span class="Constant"><span class="Constant">:</span>try</span>)) <span class="Keyword">+</span> [<span class="String"><span class="String">'</span><span class="String">'</span></span>])
<span class="Keyword">end</span>
<span class="Keyword">def</span> <span class="Entity">call</span>(<span class="Variable">env</span>)
<span class="Variable"><span class="Variable">@</span>next</span> <span class="Keyword">=</span> <span class="Constant">0</span>
<span class="Keyword">while</span> <span class="Variable"><span class="Variable">@</span>next</span> <span class="Keyword">&lt;</span> <span class="Variable"><span class="Variable">@</span>try</span>.<span class="Entity">size</span> <span class="Keyword">&amp;&amp;</span> <span class="Constant">404</span> <span class="Keyword">==</span> (resp <span class="Keyword">=</span> <span class="Keyword">super</span>(<span class="Entity">try_next</span>(env)))[<span class="Constant">0</span>]
<span class="Variable"><span class="Variable">@</span>next</span> <span class="Keyword">+=</span> <span class="Constant">1</span>
<span class="Keyword">end</span>
<span class="Constant">404</span> <span class="Keyword">==</span> resp[<span class="Constant">0</span>] <span class="Keyword">?</span> <span class="Variable"><span class="Variable">@</span>app</span>.<span class="Entity">call</span> : resp
<span class="Keyword">end</span>
<span class="Keyword">private</span>
<span class="Keyword">def</span> <span class="Entity">try_next</span>(<span class="Variable">env</span>)
env.<span class="Entity">merge</span>(<span class="String"><span class="String">'</span>PATH_INFO<span class="String">'</span></span> =&gt; env[<span class="String"><span class="String">'</span>PATH_INFO<span class="String">'</span></span>] <span class="Keyword">+</span> <span class="Variable"><span class="Variable">@</span>try</span>[<span class="Variable"><span class="Variable">@</span>next</span>])
<span class="Keyword">end</span>
<span class="Keyword">end</span>
<span class="Keyword">end</span>
use <span class="Support">Rack</span>::<span class="Entity">TryStatic</span>,
<span class="Constant"><span class="Constant">:</span>root</span> =&gt; <span class="String"><span class="String">&quot;</span>output<span class="String">&quot;</span></span>, <span class="Comment"><span class="Comment">#</span> static files root dir</span>
<span class="Constant"><span class="Constant">:</span>urls</span> =&gt; <span class="String"><span class="String">%w[</span>/<span class="String">]</span></span>, <span class="Comment"><span class="Comment">#</span> match all requests </span>
<span class="Constant"><span class="Constant">:</span>try</span> =&gt; [<span class="String"><span class="String">'</span>.html<span class="String">'</span></span>, <span class="String"><span class="String">'</span>index.html<span class="String">'</span></span>, <span class="String"><span class="String">'</span>/index.html<span class="String">'</span></span>] <span class="Comment"><span class="Comment">#</span> try these postfixes sequentially</span>
errorFile<span class="Keyword">=</span><span class="String"><span class="String">'</span>output/Scratch/en/error/404-not_found/index.html<span class="String">'</span></span>
run lambda { [<span class="Constant">404</span>, {
<span class="String"><span class="String">&quot;</span>Last-Modified<span class="String">&quot;</span></span> =&gt; <span class="Support">File</span>.<span class="Entity">mtime</span>(errorFile).<span class="Entity">httpdate</span>,
<span class="String"><span class="String">&quot;</span>Content-Type<span class="String">&quot;</span></span> =&gt; <span class="String"><span class="String">&quot;</span>text/html<span class="String">&quot;</span></span>,
<span class="String"><span class="String">&quot;</span>Content-Length<span class="String">&quot;</span></span> =&gt; <span class="Support">File</span>.<span class="Entity">size</span>(errorFile).<span class="Entity">to_s</span>
}, <span class="Support">File</span>.<span class="Entity">read</span>(errorFile)] }
</pre>
</div></div>
<p>and the <code>.gems</code> file needed to install <code>rack</code> middlewares.</p>
<div class="code"><div class="file"><a href="/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/code/.gems"> &#x27A5; .gems </a></div><div class="withfile">
<pre class="twilight">
rack
rack<span class="Keyword">-</span>rewrite
rack<span class="Keyword">-</span>contrib
</pre>
</div></div>
<p>Now, just follow the heroku tutorial to create an application&nbsp;:</p>
<pre class="twilight">
git init
git add .
heroku create
git push heroku master
</pre>
<p>Now Ill should be able to redirect properly to my own 404 page for example.
I hope it is helpful.</p>
<hr/><div class="footnotes">
<ol>
<li id="fn:1">
<p>I was inspired by this <a href="http://gmarik.info/blog/2010/05/10/blogging-with-jekyll-and-heroku-for-free">article</a>. <a href="#fnref:1" rev="footnote">&#8617;</a></p>
</li>
</ol>
</div>
</div>
<div id="choixrss">
<a id="rss" href="http://feeds.feedburner.com/yannespositocomen">
Subscribe
</a>
</div>
<script type="text/javascript">
$(document).ready(function(){
$('#comment').hide();
$('#clickcomment').click(showComments);
});
function showComments() {
$('#comment').show();
$('#clickcomment').fadeOut();
}
document.write('<div id="clickcomment">Comments</div>');
</script>
<div class="flush"></div>
<div class="corps" id="comment">
<h2 class="first">comments</h2>
<noscript>
You must enable javascript to comment.
</noscript>
<script type="text/javascript">
var idcomments_acct = 'a307f0044511ff1b5cfca573fc0a52e7';
var idcomments_post_id = '/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/';
var idcomments_post_url = 'http://yannesposito.com/Scratch/en/blog/2010-08-23-Now-heberged-on-heroku/';
</script>
<span id="IDCommentsPostTitle" style="display:none"></span>
<script type='text/javascript' src='/Scratch/js/genericCommentWrapperV2.js'></script>
</div>
<div id="entete" class="corps_spaced">
<div id="liens">
<ul><li><a href="/Scratch/en/">Home</a></li>
<li><a href="/Scratch/en/blog/">Blog</a></li>
<li><a href="/Scratch/en/softwares/">Softwares</a></li>
<li><a href="/Scratch/en/about/">About</a></li></ul>
</div>
<div class="flush"></div>
<hr/>
<div id="next_before_articles">
<div id="previous_articles">
previous entries
<div class="previous_article">
<a href="/Scratch/en/blog/2010-07-09-Indecidabilities/"><span class="nicer">«</span>&nbsp;Undecidabilities (part 1)</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/2010-07-31-New-style-after-holidays/"><span class="nicer">«</span>&nbsp;New style after holidays</a>
</div>
<div class="previous_article">
<a href="/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator/"><span class="nicer">«</span>&nbsp;Do not use CSS gradient with Chrome</a>
</div>
</div>
<div id="next_articles">
next entries
<div class="next_article">
<a href="/Scratch/en/blog/2010-08-31-send-mail-from-command-line-with-attached-file/">send mail from command line with attached file&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/en/blog/2010-09-02-base64-and-sha1-on-iPhone/">base64 and sha1 on iPhone&nbsp;<span class="nicer">»</span></a>
</div>
<div class="next_article">
<a href="/Scratch/en/blog/2010-09-02-Use-git-to-calculate-trusted-mtimes/">Use git to calculate trusted mtimes&nbsp;<span class="nicer">»</span></a>
</div>
</div>
<div class="flush"></div>
</div>
</div>
<div id="bottom">
<div>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/">Copyright ©, Yann Esposito</a>
</div>
<div id="lastmod">
Created: 08/23/2010
Modified: 04/20/2011
</div>
<div>
Entirely done with
<a href="http://www.vim.org">Vim</a>
and
<a href="http://nanoc.stoneship.org">nanoc</a>
</div>
<div>
<a href="/Scratch/en/validation/">Validation</a>
<a href="http://validator.w3.org/check?uri=referer"> [xhtml] </a>
.
<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3"> [css] </a>
.
<a href="http://validator.w3.org/feed/check.cgi?url=http%3A//yannesposito.com/Scratch/en/blog/feed/feed.xml">[rss]</a>
</div>
</div>
<div class="clear"></div>
</div>
</body>
</html>