Skip to content

Commit

Permalink
initial commit: merb-gen skel
Browse files Browse the repository at this point in the history
  • Loading branch information
rpl committed Aug 15, 2008
0 parents commit eceffff
Show file tree
Hide file tree
Showing 23 changed files with 1,143 additions and 0 deletions.
75 changes: 75 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
require 'rubygems'
Gem.clear_paths
Gem.path.unshift(File.join(File.dirname(__FILE__), "gems"))

require 'rake'
require 'rake/rdoctask'
require 'rake/testtask'
require 'spec/rake/spectask'
require 'fileutils'

##
# requires frozen merb-core (from /framework)
# adds the other components to the load path
def require_frozen_framework
framework = File.join(File.dirname(__FILE__), "framework")
if File.directory?(framework)
puts "Running from frozen framework"
core = File.join(framework,"merb-core")
if File.directory?(core)
puts "using merb-core from #{core}"
$:.unshift File.join(core,"lib")
require 'merb-core'
end
more = File.join(framework,"merb-more")
if File.directory?(more)
Dir.new(more).select {|d| d =~ /merb-/}.each do |d|
$:.unshift File.join(more,d,'lib')
end
end
plugins = File.join(framework,"merb-plugins")
if File.directory?(plugins)
Dir.new(plugins).select {|d| d =~ /merb_/}.each do |d|
$:.unshift File.join(plugins,d,'lib')
end
end
require "merb-core/core_ext/kernel"
require "merb-core/core_ext/rubygems"
else
p "merb doesn't seem to be frozen in /framework"
require 'merb-core'
end
end

if ENV['FROZEN']
require_frozen_framework
else
require 'merb-core'
end

require 'merb-core/tasks/merb'
include FileUtils

# Load the basic runtime dependencies; this will include
# any plugins and therefore plugin rake tasks.
init_env = ENV['MERB_ENV'] || 'rake'
Merb.load_dependencies(:environment => init_env)

# Get Merb plugins and dependencies
Merb::Plugins.rakefiles.each { |r| require r }

# Load any app level custom rakefile extensions from lib/tasks
tasks_path = File.join(File.dirname(__FILE__), "lib", "tasks")
rake_files = Dir["#{tasks_path}/*.rake"]
rake_files.each{|rake_file| load rake_file }


desc "start runner environment"
task :merb_env do
Merb.start_environment(:environment => init_env, :adapter => 'runner')
end

##############################################################################
# ADD YOUR CUSTOM TASKS IN /lib/tasks
# NAME YOUR RAKE FILES file_name.rake
##############################################################################
2 changes: 2 additions & 0 deletions app/controllers/application.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
class Application < Merb::Controller
end
13 changes: 13 additions & 0 deletions app/controllers/exceptions.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
class Exceptions < Application

# handle NotFound exceptions (404)
def not_found
render :format => :html
end

# handle NotAcceptable exceptions (406)
def not_acceptable
render :format => :html
end

end
5 changes: 5 additions & 0 deletions app/helpers/global_helpers.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module Merb
module GlobalHelpers
# helpers defined here available to all views.
end
end
216 changes: 216 additions & 0 deletions app/views/exceptions/internal_server_error.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,216 @@
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title><%= @exception_name %></title>
<style type="text/css" media="screen">
body {
font-family:arial;
font-size:11px;
}
h1 {
font-size:48px;
letter-spacing:-4px;
margin:0;
line-height:36px;
color:#333;
}
h1 sup {
font-size: 0.5em;
}
h1 sup.error_500, h1 sup.error_400 {
color:#990E05;
}
h1 sup.error_100, h1 sup.error_200 {
color:#00BF10;
}
h1 sup.error_300 {
/* pretty sure you cant 'see' status 300
errors but if you could I think they
would be blue */
color:#1B2099;
}
h2 {
font-size:36px;
letter-spacing:-3px;
margin:0;
line-height:28px;
color:#444;
}
a, a:visited {
color:#00BF10;
}
.internalError {
width:800px;
margin:50px auto;
}
.header {
border-bottom:10px solid #333;
margin-bottom:1px;
background-image: url("data:image/gif;base64,R0lGODlhAwADAIAAAP///8zMzCH5BAAAAAAALAAAAAADAAMAAAIEBHIJBQA7");
padding:20px;
}
table.trace {
width:100%;
font-family:courier, monospace;
letter-spacing:-1px;
border-collapse: collapse;
border-spacing:0;
}
table.trace tr td{
padding:0;
height:26px;
font-size:13px;
vertical-align:middle;
}
table.trace tr.file{
border-top:2px solid #fff;
background-color:#F3F3F3;
}
table.trace tr.source {
background-color:#F8F8F8;
display:none;
}
table.trace .open tr.source {
display:table-row;
}
table.trace tr.file td.expand {
width:23px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAXCAIAAABvSEP3AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAdVJREFUeNqMVL+TwUAYxaRIOlEhlZHGDAUzzOQ61+AqXMV1lJSU7q/QRqm8KFUcJTNn5qJkaPyoKKVz7y4mF8na5Kt29tt9+/Z97/u81+vVQ4r9frdarS6Xi7ETDIZisRjxMGPfmk4niNPpZE+xLAugbPaZ53nzvtfMBe/3+/3dbuehBrAKhZdUKkVAWa9Xsiybv0CPZDJZLr/qa5/BwgwRjYqOKIvFYjQa/aNommZh0Ww2K5UqzwfoQOPxaLPZ3FAmk0+7lplMpt1u53J5OpBOR0eZEE9wHJfP5zud93g88QhluwWbjW+5VOmKBgKBer3eaDTDYeGBQF8+x7rqIYoiPgixWJazpA6HA+MSxRArkUgMh0M409g8Ho8+9wYxxCqVSq1W26EDHGM2m4HOHQrEc38f/Yn7cLmlIRhBENzcx8cVRZnPZ/YUep2BWkjTIfA+PKVpZAXR5QxsjiqCKvGEqqp443w+0dvy17swqD0HB3S73V5PpkNg1qBqt8kwGCjmPkinM0QJbIoEa7U6UG6ToVgs4V9G2g0ESoP5Aoi7KYX5oCgf8IKbkvn9/mr1LRQKESamzgJy0g0tSZIuB3nuGqRU9Vv9C4sKkUhEkp4soxvxI8AAhWrrtXa3X8EAAAAASUVORK5CYII=);
background-position:top left;
background-repeat:no-repeat;
}
table.trace .open tr.file td.expand {
width:19px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXZJREFUeNrslK1ywkAUhcMOBomEOiSdqLxEBJX0NaijOsjyHGGmCGyQQYaiiiw4gktkcOmZbpsuuzQ/M5XnqJ2d3S/n3nM3rTzPLUP7/Tt0+pLcGQwG3W53OLyHzPMtjYL7q9UqSRLrD4E1Gj1orCvKYuFHUWTVkOM44/HjDcp8/lL4r6NerzeZPMm1KFw0QkDn83m5fP2lHA4fNQvRtNvtjsfDd0WzmSfb2e/fdTqdOvdh/HLJZLOn0+d2HJ+KRGzbdl23EpFlmed5cp2maRzHQq1lvQ5KMi6EUZBGfup6E1pTfd+vrGW7jbQ2C9hTt9BpqNyIWaAwAy6xg2eBz5iRC/NomiZhGN5sqmnkauo0BUGgVQoBjQ80oCACgNQdZHfTYBkF2mxCtWWAqunWpahxIDUt3QYUxIFQpJHyIWpXjinabKbbwItMHT+NyjchrP8QKaSQQgoppJBCCimkkEIKKaSQQgoppJBCCimkkEIKKaSo+hRgAEFD17X08O2NAAAAAElFTkSuQmCC);
background-position:top left;
background-repeat:no-repeat;
}
table.trace tr.source td.collapse {
width:19px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAB1CAIAAAAqdO2mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAVxJREFUeNrs0zFygkAUBmBlUkgJHdABlQwVkVJKKUxBYWbkALTxMJwhltyDFkss03IF8pudIcwaDaDl/6pd2P327b7d+eHwMXs4lNkzggoVKlSoUKFChQoVKlSoUKFChQoVKlSoUKFChQqVEYqm6ft9+qiSJEkYho7jTlcw2fd9NOI4nq4gEdFwXXe1Cqco63VkWVbXRTqLhTpOwQRpF7quR1E0TgGhqvLKUFCyoQqG/rks3O6kZKW/eRFpevOCoGTXVTcMQ5EyxyDEkML1c5RzuZOICIyXqn7JBVez6282MWrx731HOv2qB8Hri2lamNk0DfpVVdV1Peodappmmua8bdvzuc7zfNprzrLMth1FnGh/X8MjCAIQv/cFz/+65PcDh7rbvYv2ZUfdj+PxsyzLgVl0hKwgTqeqKApx2LeOc7t98zyv/1FWOgvx9RPii23bmL9cetJ8Ed8CDAC6aFW8bCzFhwAAAABJRU5ErkJggg==);
background-position:bottom left;
background-repeat:no-repeat;
background-color:#6F706F;
}
table.trace tr td.path {
padding-left:10px;
}
table.trace tr td.code {
padding-left:35px;
white-space: pre;
line-height:9px;
padding-bottom:10px;
}
table.trace tr td.code em {
font-weight:bold;
color:#00BF10;
}
table.trace tr td.code a {
width: 20px;
float: left;
}
table.trace tr td.code .more {
color:#666;
}
table.trace tr td.line {
width:30px;
text-align:right;
padding-right:4px;
}
.footer {
margin-top:5px;
font-size:11px;
color:#444;
text-align:right;
}
</style>
</head>
<body>
<div class="internalError">

<div class="header">
<h1><%= @exception_name %> <sup class="error_<%= @exception.class::STATUS %>"><%= @exception.class::STATUS %></sup></h1>
<% if show_details = ::Merb::Config[:exception_details] -%>
<h2><%=h @exception.message %></h2>
<% else -%>
<h2>Sorry about that...</h2>
<% end -%>
<h3>Parameters</h3>
<ul>
<% params[:original_params].each do |param, value| %>
<li><strong><%= param %>:</strong> <%= value.inspect %></li>
<% end %>
<%= "<li>None</li>" if params[:original_params].empty? %>
</ul>

<h3>Session</h3>
<ul>
<% params[:original_session].each do |param, value| %>
<li><strong><%= param %>:</strong> <%= value.inspect %></li>
<% end %>
<%= "<li>None</li>" if params[:original_session].empty? %>
</ul>

<h3>Cookies</h3>
<ul>
<% params[:original_cookies].each do |param, value| %>
<li><strong><%= param %>:</strong> <%= value.inspect %></li>
<% end %>
<%= "<li>None</li>" if params[:original_cookies].empty? %>
</ul>
</div>

<% if show_details %>
<table class="trace">
<% @exception.backtrace.each_with_index do |line, index| %>
<tbody class="close">
<tr class="file">
<td class="expand">
</td>
<td class="path">
<%= (line.match(/^([^:]+)/)[1] rescue 'unknown').sub(/\/((opt|usr)\/local\/lib\/(ruby\/)?(gems\/)?(1.8\/)?(gems\/)?|.+\/app\/)/, '') %>
<% unless line.match(/\.erb:/) %>
in "<strong><%= line.match(/:in `(.+)'$/)[1] rescue '?' %></strong>"
<% else %>
(<strong>ERB Template</strong>)
<% end %>
</td>
<td class="line">
<a href="txmt://open?url=file://<%=file = (line.match(/^([^:]+)/)[1] rescue 'unknown')%>&amp;line=<%= lineno = line.match(/:([0-9]+):/)[1] rescue '?' %>"><%=lineno%></a>&nbsp;
</td>
</tr>
<tr class="source">
<td class="collapse">
</td>
<td class="code" colspan="2"><% (__caller_lines__(file, lineno, 5) rescue []).each do |llineno, lcode, lcurrent| %>
<a href="txmt://open?url=file://<%=file%>&amp;line=<%=llineno%>"><%= llineno %></a><%='<em>' if llineno==lineno.to_i %><%= lcode.size > 90 ? CGI.escapeHTML(lcode[0..90])+'<span class="more">......</span>' : CGI.escapeHTML(lcode) %><%='</em>' if llineno==lineno.to_i %>
<% end %>

</td>
</tr>
</tbody>
<% end %>
</table>
<script type="text/javascript" charset="utf-8">
// swop the open & closed classes
els = document.getElementsByTagName('td');
for(i=0; i<els.length; i++){
if(els[i].className=='expand' || els[i].className=='collapse'){
els[i].onclick = function(e){
tbody = this.parentNode.parentNode;
if(tbody.className=='open'){
tbody.className='closed';
}else{
tbody.className='open';
}
}
}
}
</script>
<% end %>
<div class="footer">
lots of love, from <a href="#">merb</a>
</div>
</div>
</body>
</html>
63 changes: 63 additions & 0 deletions app/views/exceptions/not_acceptable.html.erb
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
<div id="container">
<div id="header-container">
<img src="/images/merb.jpg" />
<!-- <h1>Mongrel + Erb</h1> -->
<h2>pocket rocket web framework</h2>
<hr />
</div>

<div id="left-container">
<h3>Exception:</h3>
<p><%= params[:exception] %></p>
</div>

<div id="main-container">
<h3>Why am I seeing this page?</h3>
<p>Merb couldn't find an appropriate content_type to return,
based on what you said was available via provides() and
what the client requested.</p>

<h3>How to add a mime-type</h3>
<pre><code>
Merb.add_mime_type :pdf, :to_pdf, %w[application/pdf], &quot;Content-Encoding&quot; =&gt; &quot;gzip&quot;
</code></pre>
<h3>What this means is:</h3>
<ul>
<li>Add a mime-type for :pdf</li>
<li>Register the method for converting objects to PDF as <code>#to_pdf</code>.</li>
<li>Register the incoming mime-type "Accept" header as <code>application/pdf</code>.</li>
<li>Specify a new header for PDF types so it will set <code>Content-Encoding</code> to gzip.</li>
</ul>

<h3>You can then do:</h3>
<pre><code>
class Foo &lt; Application
provides :pdf
end
</code></pre>

<h3>Where can I find help?</h3>
<p>If you have any questions or if you can't figure something out, please take a
look at our <a href="http://merbivore.com/"> project page</a>,
feel free to come chat at irc.freenode.net, channel #merb,
or post to <a href="http://groups.google.com/group/merb">merb mailing list</a>
on Google Groups.</p>

<h3>What if I've found a bug?</h3>
<p>If you want to file a bug or make your own contribution to Merb,
feel free to register and create a ticket at our
<a href="http://merb.lighthouseapp.com/">project development page</a>
on Lighthouse.</p>

<h3>How do I edit this page?</h3>
<p>You can change what people see when this happens by editing <tt>app/views/exceptions/not_acceptable.html.erb</tt>.</p>

</div>

<div id="footer-container">
<hr />
<div class="left"></div>
<div class="right">&copy; 2007 the merb dev team</div>
<p>&nbsp;</p>
</div>
</div>
Loading

0 comments on commit eceffff

Please sign in to comment.