/usr/share/doc/python-pecan-doc/html/development.html is in python-pecan-doc 1.2.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Developing Pecan Applications Locally — Pecan 1.2.1 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: './',
VERSION: '1.2.1',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true,
SOURCELINK_SUFFIX: '.txt'
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Deploying Pecan in Production" href="deployment.html" />
<link rel="prev" title="Command Line Pecan" href="commands.html" />
</head>
<body>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="deployment.html" title="Deploying Pecan in Production"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="commands.html" title="Command Line Pecan"
accesskey="P">previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">Pecan 1.2.1 documentation</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<div class="section" id="developing-pecan-applications-locally">
<span id="development"></span><h1>Developing Pecan Applications Locally<a class="headerlink" href="#developing-pecan-applications-locally" title="Permalink to this headline">¶</a></h1>
<div class="section" id="reloading-automatically-as-files-change">
<h2>Reloading Automatically as Files Change<a class="headerlink" href="#reloading-automatically-as-files-change" title="Permalink to this headline">¶</a></h2>
<p>Pausing to restart your development server as you work can be interruptive, so
<strong class="command">pecan serve</strong> provides a <code class="docutils literal"><span class="pre">--reload</span></code> flag to make life easier.</p>
<p>To provide this functionality, Pecan makes use of the Python
<a class="reference external" href="https://pypi.python.org/pypi/watchdog">watchdog</a> library. You’ll need to
install it for development use before continuing:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>$ pip install watchdog
Downloading/unpacking watchdog
...
Successfully installed watchdog
</pre></div>
</div>
<div class="highlight-default"><div class="highlight"><pre><span></span>$ pecan serve --reload config.py
Monitoring for changes...
Starting server in PID 000.
serving on 0.0.0.0:8080, view at http://127.0.0.1:8080
</pre></div>
</div>
<p>As you work, Pecan will listen for any file or directory modification
events in your project and silently restart your server process in the
background.</p>
</div>
<div class="section" id="debugging-pecan-applications">
<h2>Debugging Pecan Applications<a class="headerlink" href="#debugging-pecan-applications" title="Permalink to this headline">¶</a></h2>
<p>Pecan comes with simple debugging middleware for helping diagnose problems
in your applications. To enable the debugging middleware, simply set the
<code class="docutils literal"><span class="pre">debug</span></code> flag to <code class="docutils literal"><span class="pre">True</span></code> in your configuration file:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">app</span> <span class="o">=</span> <span class="p">{</span>
<span class="o">...</span>
<span class="s1">'debug'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
<span class="o">...</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Once enabled, the middleware will automatically catch exceptions raised by your
application and display the Python stack trace and WSGI environment in your
browser when runtime exceptions are raised.</p>
<p>To improve debugging, including support for an interactive browser-based
console, Pecan makes use of the Python <cite>backlash
<https://pypi.python.org/pypi/backlash></cite> library. You’ll need to install it
for development use before continuing:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span>$ pip install backlash
Downloading/unpacking backlash
...
Successfully installed backlash
</pre></div>
</div>
</div>
<div class="section" id="serving-static-files">
<h2>Serving Static Files<a class="headerlink" href="#serving-static-files" title="Permalink to this headline">¶</a></h2>
<p>Pecan comes with simple file serving middleware for serving CSS, Javascript,
images, and other static files. You can configure it by ensuring that the
following options are specified in your configuration file:</p>
<div class="highlight-default"><div class="highlight"><pre><span></span><span class="n">app</span> <span class="o">=</span> <span class="p">{</span>
<span class="o">...</span>
<span class="s1">'debug'</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
<span class="s1">'static_root'</span><span class="p">:</span> <span class="s1">'%(confdir)/public</span>
<span class="p">}</span>
</pre></div>
</div>
<p>where <code class="docutils literal"><span class="pre">static_root</span></code> is an absolute pathname to the directory in which your
static files live. For convenience, the path may include the <code class="docutils literal"><span class="pre">%(confdir)</span></code>
variable, which Pecan will substitute with the absolute path of your
configuration file at runtime.</p>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">In production, <code class="docutils literal"><span class="pre">app.debug</span></code> should <em>never</em> be set to <code class="docutils literal"><span class="pre">True</span></code>, so you’ll
need to serve your static files via your production web server.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Developing Pecan Applications Locally</a><ul>
<li><a class="reference internal" href="#reloading-automatically-as-files-change">Reloading Automatically as Files Change</a></li>
<li><a class="reference internal" href="#debugging-pecan-applications">Debugging Pecan Applications</a></li>
<li><a class="reference internal" href="#serving-static-files">Serving Static Files</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="commands.html"
title="previous chapter">Command Line Pecan</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="deployment.html"
title="next chapter">Deploying Pecan in Production</a></p>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/development.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<div><input type="text" name="q" /></div>
<div><input type="submit" value="Go" /></div>
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li class="right" >
<a href="deployment.html" title="Deploying Pecan in Production"
>next</a> |</li>
<li class="right" >
<a href="commands.html" title="Command Line Pecan"
>previous</a> |</li>
<li class="nav-item nav-item-0"><a href="index.html">Pecan 1.2.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2018, Jonathan LaCour.
Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.6.6.
</div>
</body>
</html>
|