forked from hotsh/rstat.us
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove rails default doc stuff; clean up rocco tasks; create an index…
… file
- Loading branch information
1 parent
d5c375b
commit 5ceeb2d
Showing
4 changed files
with
254 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,6 @@ | ||
*.swp | ||
docs | ||
docs/* | ||
!docs/index.html | ||
config.yml | ||
.sass-cache | ||
tmp | ||
|
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,240 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta http-equiv="content-type" content="text/html;charset=utf-8"> | ||
<title>application_controller.rb</title> | ||
<link rel="stylesheet" href="http://jashkenas.github.com/docco/resources/docco.css"> | ||
</head> | ||
<body> | ||
<div id='container'> | ||
<div id="background"></div> | ||
<div id="jump_to"> | ||
Jump To … | ||
<div id="jump_wrapper"> | ||
<div id="jump_page"> | ||
<a class="source" href="application_controller.html">application_controller.rb</a> | ||
<a class="source" href="auth_controller.html">auth_controller.rb</a> | ||
<a class="source" href="feeds_controller.html">feeds_controller.rb</a> | ||
<a class="source" href="salmon_controller.html">salmon_controller.rb</a> | ||
<a class="source" href="searches_controller.html">searches_controller.rb</a> | ||
<a class="source" href="sessions_controller.html">sessions_controller.rb</a> | ||
<a class="source" href="static_controller.html">static_controller.rb</a> | ||
<a class="source" href="subscriptions_controller.html">subscriptions_controller.rb</a> | ||
<a class="source" href="updates_controller.html">updates_controller.rb</a> | ||
<a class="source" href="users_controller.html">users_controller.rb</a> | ||
<a class="source" href="webfinger_controller.html">webfinger_controller.rb</a> | ||
<a class="source" href="../models/author.html">author.rb</a> | ||
<a class="source" href="../models/authorization.html">authorization.rb</a> | ||
<a class="source" href="../models/feed.html">feed.rb</a> | ||
<a class="source" href="../models/notifier.html">notifier.rb</a> | ||
<a class="source" href="../models/update.html">update.rb</a> | ||
<a class="source" href="../models/user.html">user.rb</a> | ||
</div> | ||
</div> | ||
</div> | ||
<table cellspacing=0 cellpadding=0> | ||
<thead> | ||
<tr> | ||
<th class=docs><h1>application_controller.rb</h1></th> | ||
<th class=code></th> | ||
</tr> | ||
</thead> | ||
<tbody> | ||
<tr id='section-1'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-1">¶</a> | ||
</div> | ||
|
||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre><span class="k">class</span> <span class="nc">ApplicationController</span> <span class="o"><</span> <span class="no">ActionController</span><span class="o">::</span><span class="no">Base</span> | ||
<span class="n">protect_from_forgery</span></pre></div> | ||
</td> | ||
</tr> | ||
<tr id='section-2'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-2">¶</a> | ||
</div> | ||
<p>layout :detect_browser</p> | ||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre> <span class="n">helper_method</span> <span class="ss">:current_user</span> | ||
<span class="n">helper_method</span> <span class="ss">:logged_in?</span> | ||
<span class="n">helper_method</span> <span class="ss">:admin_only!</span> | ||
<span class="n">helper_method</span> <span class="ss">:menu_item</span> | ||
<span class="n">helper_method</span> <span class="ss">:require_user</span> | ||
<span class="n">helper_method</span> <span class="ss">:set_params_page</span> | ||
<span class="n">helper_method</span> <span class="ss">:show_layout?</span> | ||
<span class="n">helper_method</span> <span class="ss">:pjax_request?</span> | ||
<span class="n">helper_method</span> <span class="ss">:title</span> | ||
<span class="n">helper_method</span> <span class="ss">:set_pagination_buttons</span> | ||
|
||
<span class="kp">protected</span></pre></div> | ||
</td> | ||
</tr> | ||
<tr id='section-3'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-3">¶</a> | ||
</div> | ||
<p>This incredibly useful helper gives us the currently logged in user. We | ||
keep track of that by just setting a session variable with their id. If it | ||
doesn’t exist, we just want to return nil.</p> | ||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">current_user</span> | ||
<span class="k">return</span> <span class="k">unless</span> <span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span> | ||
<span class="vi">@current_user</span> <span class="o">||=</span> <span class="no">User</span><span class="o">.</span><span class="n">first</span><span class="p">(</span><span class="ss">:id</span> <span class="o">=></span> <span class="n">session</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span><span class="p">)</span> | ||
<span class="k">end</span></pre></div> | ||
</td> | ||
</tr> | ||
<tr id='section-4'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-4">¶</a> | ||
</div> | ||
<p>This very simple method checks if we’ve got a logged in user. That’s pretty | ||
easy: just check our current_user.</p> | ||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">logged_in?</span> | ||
<span class="n">current_user</span> | ||
<span class="k">end</span></pre></div> | ||
</td> | ||
</tr> | ||
<tr id='section-5'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-5">¶</a> | ||
</div> | ||
<p>Our <code>admin_only!</code> helper will only let admin users visit the page. If | ||
they’re not an admin, we redirect them to either / or the page that we | ||
specified when we called it.</p> | ||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">admin_only!</span><span class="p">(</span><span class="n">opts</span> <span class="o">=</span> <span class="p">{</span><span class="ss">:return</span> <span class="o">=></span> <span class="s2">"/"</span><span class="p">})</span> | ||
<span class="k">unless</span> <span class="n">logged_in?</span> <span class="o">&&</span> <span class="n">current_user</span><span class="o">.</span><span class="n">admin?</span> | ||
<span class="n">flash</span><span class="o">[</span><span class="ss">:error</span><span class="o">]</span> <span class="o">=</span> <span class="s2">"Sorry, buddy"</span> | ||
<span class="n">redirect_to</span> <span class="n">opts</span><span class="o">[</span><span class="ss">:return</span><span class="o">]</span> | ||
<span class="k">end</span> | ||
<span class="k">end</span></pre></div> | ||
</td> | ||
</tr> | ||
<tr id='section-6'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-6">¶</a> | ||
</div> | ||
<p>Similar to <code>admin_only!</code>, <code>require_login!</code> only lets logged in users access | ||
a particular page, and redirects them if they’re not.</p> | ||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">require_login!</span><span class="p">(</span><span class="n">opts</span> <span class="o">=</span> <span class="p">{</span><span class="ss">:return</span> <span class="o">=></span> <span class="s2">"/"</span><span class="p">})</span> | ||
<span class="k">unless</span> <span class="n">logged_in?</span> | ||
<span class="n">flash</span><span class="o">[</span><span class="ss">:error</span><span class="o">]</span> <span class="o">=</span> <span class="s2">"Sorry, buddy"</span> | ||
<span class="n">redirect_to</span> <span class="n">opts</span><span class="o">[</span><span class="ss">:return</span><span class="o">]</span> | ||
<span class="k">end</span> | ||
<span class="k">end</span> | ||
|
||
<span class="k">def</span> <span class="nf">menu_item</span><span class="p">(</span><span class="nb">name</span><span class="p">,</span> <span class="n">url</span><span class="p">,</span> <span class="n">options</span> <span class="o">=</span> <span class="p">{})</span> | ||
<span class="n">icon</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="ss">:icon</span><span class="p">){</span> <span class="kp">false</span> <span class="p">}</span> | ||
<span class="n">classes</span> <span class="o">=</span> <span class="n">options</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="ss">:classes</span><span class="p">){</span> <span class="o">[]</span> <span class="p">}</span> | ||
|
||
<span class="n">classes</span> <span class="o"><<</span> <span class="nb">name</span><span class="o">.</span><span class="n">downcase</span><span class="o">.</span><span class="n">gsub</span><span class="p">(</span><span class="s2">" "</span><span class="p">,</span> <span class="s2">"_"</span><span class="p">)</span> | ||
<span class="n">classes</span> <span class="o"><<</span> <span class="p">(</span><span class="n">request</span><span class="o">.</span><span class="n">path_info</span> <span class="o">==</span> <span class="n">url</span> <span class="p">?</span> <span class="s2">"active"</span> <span class="p">:</span> <span class="s2">""</span><span class="p">)</span> | ||
|
||
<span class="s2">"<li class='</span><span class="si">#{</span><span class="n">classes</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="s2">" "</span><span class="p">)</span><span class="si">}</span><span class="s2">'></span> | ||
<span class="s2"> <a href='</span><span class="si">#{</span><span class="n">url</span><span class="si">}</span><span class="s2">'>"</span> <span class="o">+</span> | ||
<span class="p">(</span><span class="n">icon</span> <span class="p">?</span> <span class="s2">"<div class='icon'></div>"</span> <span class="p">:</span> <span class="s2">""</span><span class="p">)</span> <span class="o">+</span> | ||
<span class="s2">"</span><span class="si">#{</span><span class="nb">name</span><span class="si">}</span><span class="s2"></a></span> | ||
<span class="s2"> </li>"</span> | ||
<span class="k">end</span> | ||
|
||
<span class="k">def</span> <span class="nf">require_user</span> | ||
<span class="n">redirect_to</span> <span class="n">root_path</span> <span class="k">unless</span> <span class="n">current_user</span> | ||
<span class="k">end</span></pre></div> | ||
</td> | ||
</tr> | ||
<tr id='section-7'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-7">¶</a> | ||
</div> | ||
<p>Many pages on rstatus are paginated. To keep track of it in all the | ||
different routes we have this handy helper that either picks up | ||
the previous setting or resets it to a default value.</p> | ||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">set_params_page</span> | ||
<span class="n">params</span><span class="o">[</span><span class="ss">:page</span><span class="o">]</span> <span class="o">=</span> <span class="n">params</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s2">"page"</span><span class="p">){</span><span class="mi">1</span><span class="p">}</span><span class="o">.</span><span class="n">to_i</span> | ||
<span class="n">params</span><span class="o">[</span><span class="ss">:per_page</span><span class="o">]</span> <span class="o">=</span> <span class="n">params</span><span class="o">.</span><span class="n">fetch</span><span class="p">(</span><span class="s2">"per_page"</span><span class="p">){</span><span class="mi">20</span><span class="p">}</span><span class="o">.</span><span class="n">to_i</span> | ||
<span class="k">end</span></pre></div> | ||
</td> | ||
</tr> | ||
<tr id='section-8'> | ||
<td class=docs> | ||
<div class="pilwrap"> | ||
<a class="pilcrow" href="#section-8">¶</a> | ||
</div> | ||
<p>Similar to the set_params_page helper this one creates the links | ||
for the previous and the next page on all routes that display | ||
stuff on more than one page. | ||
If needed it can also take options for more parameters</p> | ||
|
||
</td> | ||
<td class=code> | ||
<div class='highlight'><pre> <span class="k">def</span> <span class="nf">set_pagination_buttons</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">options</span> <span class="o">=</span> <span class="p">{})</span> | ||
<span class="k">return</span> <span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">nil?</span> <span class="o">||</span> <span class="n">data</span><span class="o">.</span><span class="n">empty?</span> | ||
|
||
<span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">next_page</span> | ||
<span class="n">params</span> <span class="o">=</span> <span class="p">{</span> | ||
<span class="ss">:page</span> <span class="o">=></span> <span class="n">data</span><span class="o">.</span><span class="n">next_page</span><span class="p">,</span> | ||
<span class="ss">:per_page</span> <span class="o">=></span> <span class="n">data</span><span class="o">.</span><span class="n">per_page</span> | ||
<span class="p">}</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">options</span><span class="p">)</span> | ||
|
||
<span class="vi">@next_page</span> <span class="o">=</span> <span class="s2">"?</span><span class="si">#{</span><span class="no">Rack</span><span class="o">::</span><span class="no">Utils</span><span class="o">.</span><span class="n">build_query</span> <span class="n">params</span><span class="si">}</span><span class="s2">"</span> | ||
<span class="k">end</span> | ||
|
||
<span class="k">if</span> <span class="n">data</span><span class="o">.</span><span class="n">previous_page</span> | ||
<span class="n">params</span> <span class="o">=</span> <span class="p">{</span> | ||
<span class="ss">:page</span> <span class="o">=></span> <span class="n">data</span><span class="o">.</span><span class="n">previous_page</span><span class="p">,</span> | ||
<span class="ss">:per_page</span> <span class="o">=></span> <span class="n">data</span><span class="o">.</span><span class="n">per_page</span> | ||
<span class="p">}</span><span class="o">.</span><span class="n">merge</span><span class="p">(</span><span class="n">options</span><span class="p">)</span> | ||
|
||
<span class="vi">@prev_page</span> <span class="o">=</span> <span class="s2">"?</span><span class="si">#{</span><span class="no">Rack</span><span class="o">::</span><span class="no">Utils</span><span class="o">.</span><span class="n">build_query</span> <span class="n">params</span><span class="si">}</span><span class="s2">"</span> | ||
<span class="k">end</span> | ||
<span class="k">end</span> | ||
|
||
<span class="k">def</span> <span class="nf">title</span><span class="p">(</span><span class="n">str</span><span class="p">)</span> | ||
<span class="vi">@title</span> <span class="o">=</span> <span class="n">str</span> | ||
<span class="n">pjax_request?</span> <span class="p">?</span> <span class="vi">@title</span> <span class="p">:</span> <span class="kp">nil</span> | ||
<span class="k">end</span> | ||
|
||
<span class="k">def</span> <span class="nf">pjax_request?</span> | ||
<span class="n">env</span><span class="o">[</span><span class="s1">'HTTP_X_PJAX'</span><span class="o">]</span> | ||
<span class="k">end</span> | ||
|
||
<span class="k">def</span> <span class="nf">show_layout?</span> | ||
<span class="o">!</span><span class="n">pjax_request?</span> | ||
<span class="k">end</span> | ||
|
||
<span class="kp">private</span> | ||
|
||
<span class="no">MOBILE_BROWSERS</span> <span class="o">=</span> <span class="o">[</span><span class="s2">"android"</span><span class="p">,</span> <span class="s2">"ipod"</span><span class="p">,</span> <span class="s2">"opera mini"</span><span class="p">,</span> <span class="s2">"blackberry"</span><span class="p">,</span> <span class="s2">"palm"</span><span class="p">,</span><span class="s2">"hiptop"</span><span class="p">,</span><span class="s2">"avantgo"</span><span class="p">,</span><span class="s2">"plucker"</span><span class="p">,</span> <span class="s2">"xiino"</span><span class="p">,</span><span class="s2">"blazer"</span><span class="p">,</span><span class="s2">"elaine"</span><span class="p">,</span> <span class="s2">"windows ce; ppc;"</span><span class="p">,</span> <span class="s2">"windows ce; smartphone;"</span><span class="p">,</span><span class="s2">"windows ce; iemobile"</span><span class="p">,</span> <span class="s2">"up.browser"</span><span class="p">,</span><span class="s2">"up.link"</span><span class="p">,</span><span class="s2">"mmp"</span><span class="p">,</span><span class="s2">"symbian"</span><span class="p">,</span><span class="s2">"smartphone"</span><span class="p">,</span> <span class="s2">"midp"</span><span class="p">,</span><span class="s2">"wap"</span><span class="p">,</span><span class="s2">"vodafone"</span><span class="p">,</span><span class="s2">"o2"</span><span class="p">,</span><span class="s2">"pocket"</span><span class="p">,</span><span class="s2">"kindle"</span><span class="p">,</span> <span class="s2">"mobile"</span><span class="p">,</span><span class="s2">"pda"</span><span class="p">,</span><span class="s2">"psp"</span><span class="p">,</span><span class="s2">"treo"</span><span class="o">]</span> | ||
|
||
<span class="k">def</span> <span class="nf">detect_browser</span> | ||
<span class="n">agent</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">headers</span><span class="o">[</span><span class="s2">"HTTP_USER_AGENT"</span><span class="o">].</span><span class="n">downcase</span> | ||
<span class="no">MOBILE_BROWSERS</span><span class="o">.</span><span class="n">each</span> <span class="k">do</span> <span class="o">|</span><span class="n">m</span><span class="o">|</span> | ||
<span class="k">return</span> <span class="s2">"mobile"</span> <span class="k">if</span> <span class="n">agent</span><span class="o">.</span><span class="n">match</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> | ||
<span class="k">end</span> | ||
<span class="k">return</span> <span class="s2">"application"</span> | ||
<span class="k">end</span> | ||
|
||
<span class="k">end</span></pre></div> | ||
</td> | ||
</tr> | ||
</table> | ||
</div> | ||
</body> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,25 @@ | ||
# Remove the rails-provided rake task for docs that we're not using | ||
Rake.application.instance_variable_get('@tasks').delete('doc:app') | ||
|
||
begin | ||
require 'rocco/tasks' | ||
Rocco::make 'docs/', ["app/models/*.rb", "app/controllers/*.rb"] | ||
|
||
desc 'Build rocco docs' | ||
task :docs => :rocco | ||
directory 'docs/' | ||
task :rocco | ||
Rocco::make 'docs/', ["app/models/*.rb", "app/controllers/*.rb"] | ||
|
||
desc 'Build docs and open in browser for the reading' | ||
task :read => :docs do | ||
task :read => :rocco do | ||
sh 'open docs/index.html' | ||
end | ||
|
||
# Alias for docs task | ||
task :doc => :docs | ||
# Convenient aliases | ||
desc 'Build rocco docs' | ||
task :doc => :rocco | ||
desc 'Build rocco docs' | ||
task :docs => :rocco | ||
|
||
rescue LoadError | ||
warn "#$! -- rocco tasks not loaded." | ||
task :rocco | ||
end |