wbzyl-rack-static-assets 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. data/LICENSE +22 -0
  2. data/README.markdown +91 -0
  3. data/examples/apache-virtualhost.conf +18 -0
  4. data/examples/app1/app1.rb +11 -0
  5. data/examples/app1/config.ru +22 -0
  6. data/examples/app1/public/images/tatry1.jpg +0 -0
  7. data/examples/app1/public/javascripts/app1.js +1 -0
  8. data/examples/app1/public/stylesheets/app1.css +14 -0
  9. data/examples/app1/public/stylesheets/src/bronzed_olive.png +0 -0
  10. data/examples/app1/tmp/always_restart.txt +0 -0
  11. data/examples/app1/views/index.erb +3 -0
  12. data/examples/app1/views/layout.erb +17 -0
  13. data/examples/app2/app2.rb +12 -0
  14. data/examples/app2/config.ru +7 -0
  15. data/examples/app2/public/images/tatry2.jpg +0 -0
  16. data/examples/app2/public/javascripts/app2.js +1 -0
  17. data/examples/app2/public/stylesheets/app2.css +18 -0
  18. data/examples/app2/public/stylesheets/src/skating.png +0 -0
  19. data/examples/app2/tmp/always_restart.txt +0 -0
  20. data/examples/app2/views/index.erb +3 -0
  21. data/examples/app2/views/layout.erb +17 -0
  22. data/examples/mapp1/config.ru +14 -0
  23. data/examples/mapp1/mapp.rb +24 -0
  24. data/examples/mapp1/public/images/tatry1.jpg +0 -0
  25. data/examples/mapp1/public/javascripts/mapp.js +1 -0
  26. data/examples/mapp1/public/stylesheets/mapp.css +14 -0
  27. data/examples/mapp1/public/stylesheets/src/background.png +0 -0
  28. data/examples/mapp1/tmp/always_restart.txt +0 -0
  29. data/examples/mapp1/views/app.erb +3 -0
  30. data/examples/mapp1/views/layout.erb +23 -0
  31. data/examples/mapp2/config.ru +14 -0
  32. data/examples/mapp2/mapp.rb +21 -0
  33. data/examples/mapp2/public/images/tatry2.jpg +0 -0
  34. data/examples/mapp2/public/javascripts/mapp.js +1 -0
  35. data/examples/mapp2/public/stylesheets/mapp.css +14 -0
  36. data/examples/mapp2/public/stylesheets/src/background.png +0 -0
  37. data/examples/mapp2/tmp/always_restart.txt +0 -0
  38. data/examples/mapp2/views/layout.erb +16 -0
  39. data/examples/mapp2/views/mapp.erb +3 -0
  40. data/examples/mconfig.ru +19 -0
  41. data/lib/rack/static-assets.rb +76 -0
  42. metadata +126 -0
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2009 Wlodek Bzyl
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ 'Software'), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.markdown ADDED
@@ -0,0 +1,91 @@
1
+ # *StaticAssets* Middleware
2
+
3
+ To install it, run:
4
+
5
+ sudo gem install wbzyl-sinatra-static-assets -s http://gems.github.com
6
+
7
+ To use, include it in a Sinatra application:
8
+
9
+ require 'rubygems'
10
+ gem 'static-assets-middleware'
11
+ require 'rack/static_assets'
12
+
13
+ ## When you will need this gem?
14
+
15
+ In short, whenever two or more applications are deployed to sub-URI
16
+ with Phussion Passenger.
17
+
18
+ This means, that we want these applications to be mounted
19
+ under one host, `http://example.org` in the example below:
20
+
21
+ http://example.org/app1
22
+ http://example.org/app2
23
+ ...
24
+ http://example.org/tests/app3
25
+ http://example.org/secret/app3
26
+ ...
27
+
28
+ See Phusion Passenger users guide, [Deploying a Rack-based Ruby
29
+ application](http://www.modrails.com/documentation/Users guide Apache.html#_deploying_a_rack_based_ruby_application),
30
+ Deploying to a sub URI.
31
+
32
+
33
+ *How to fix broken images/CSS/JavaScript URIs in sub-URI deployments*
34
+
35
+ Some people experience broken images and other broken static assets
36
+ when they deploy their application to a sub-URI
37
+ (i.e. http://mysite.com/railsapp/). The reason for this usually is
38
+ that you used a static URI for your image in the views. This means
39
+ your img source probably refers to something like /images/foo.jpg. The
40
+ leading slash means that it's an absolute URI: you're telling the
41
+ browser to always load http://mysite.com/images/foo.jpg no matter
42
+ what. The problem is that the image is actually at
43
+ http://mysite.com/railsapp/images/foo.jpg. There are two ways to fix
44
+ this.
45
+
46
+ The second and highly recommended way is to always use Rails helper
47
+ methods to output tags for static assets. These helper methods
48
+ automatically take care of prepending the base URI that you've
49
+ deployed the application to. For images there is `image_tag`, for
50
+ JavaScript there is `javascript_include_tag` and for CSS there is
51
+ `stylesheet_link_tag`. In the above example you would simply remove the
52
+ `<img>` HTML tag and replace it with inline Ruby like this:
53
+
54
+ <%= image_tag("foo.jpg") %>
55
+
56
+ This will generate the proper image tag to
57
+
58
+ $RAILS_ROOT/public/images/foo.jpg
59
+
60
+ so that your images will always work
61
+ no matter what sub-URI you've deployed to.
62
+
63
+ ## Deploying to a sub URI
64
+
65
+ Add to */etc/hosts*:
66
+
67
+ 127.0.0.1 localhost.localdomain localhost sinatra.local
68
+
69
+ Sym link the application:
70
+
71
+ ln -s ~/public_git/forks/sinatra-static-assets/examples/app1/public /srv/www/sinatra/app1
72
+ ln -s ~/public_git/forks/sinatra-static-assets/examples/app2/public /srv/www/sinatra/app2
73
+
74
+ Add to */etc/httpd/conf.d/sinatra.conf*
75
+
76
+ <VirtualHost *:80>
77
+ ServerName sinatra.local
78
+ DocumentRoot /srv/www/sinatra
79
+
80
+ RackBaseURI /app1
81
+ RackBaseURI /app2
82
+ </VirtualHost>
83
+
84
+ Now, goto to `http://sinatra.local/app1` or `http://sinatra.local/app2`.
85
+
86
+
87
+ ## TODO
88
+
89
+ 1. Append a timestamp to the URI to better facilitate HTTP
90
+ caching. For more information, see the Rails API docs.
91
+
@@ -0,0 +1,18 @@
1
+ <VirtualHost *:80>
2
+ ServerName sinatra.local
3
+ DocumentRoot /srv/www/sinatra
4
+
5
+ RackBaseURI /app1
6
+ RackBaseURI /app2
7
+
8
+ #<Location /app1>
9
+ # PassengerAppRoot /path-to-app1-root
10
+ #</Location>
11
+ #
12
+ # or
13
+ #
14
+ #<Directory /app1>
15
+ # PassengerAppRoot /path-to-app1-root
16
+ #</Directory>
17
+
18
+ </VirtualHost>
@@ -0,0 +1,11 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'sinatra'
4
+
5
+ gem 'static-assets-middleware'
6
+ require 'static-assets-middleware'
7
+
8
+ get "/?" do
9
+ @title = "Tatra Mountains, Błyszcz (2159 m)"
10
+ erb :index
11
+ end
@@ -0,0 +1,22 @@
1
+ # run with: thin --rackup config.ru -p 4567 start
2
+
3
+ #use Rack::Static, :urls => ["/stylesheets", "/javascripts", "/images"], :root => "public"
4
+
5
+ require 'app1'
6
+
7
+ use Rack::ShowExceptions
8
+ use Rack::Lint
9
+ use Rack::ContentLength
10
+ use Rack::StaticAssets, :logging => true
11
+
12
+ App = Rack::Builder.new do
13
+ map '/tatry' do
14
+ run Sinatra::Application
15
+ end
16
+
17
+ map '/gallery' do
18
+ run Sinatra::Application
19
+ end
20
+ end
21
+
22
+ run App
@@ -0,0 +1 @@
1
+ /* app1.js */
@@ -0,0 +1,14 @@
1
+ html {
2
+ margin: 0;
3
+ padding: 0;
4
+ background: #ABA418 url(src/bronzed_olive.png);
5
+ }
6
+
7
+ body {
8
+ width: 600px;
9
+ margin: 1em auto;
10
+ padding: 1em 2em;
11
+ border: black solid 1px;
12
+ background-color: #D1C704;
13
+ font: normal 14px/1.6 Arial, Helvetica, sans-serif;
14
+ }
File without changes
@@ -0,0 +1,3 @@
1
+ <h2><%= @title %></h2>
2
+
3
+ <p><img src="/images/tatry1.jpg"></p>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/html4/strict.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
+
6
+ <link charset="utf-8" href="/stylesheets/app1.css" media="screen" rel="stylesheet" type="text/css">
7
+ <script charset="utf-8" src="/javascripts/app1.js" type="text/javascript"></script>
8
+
9
+ <title><%= @title %></title>
10
+ </head>
11
+
12
+ <body>
13
+
14
+ <%= yield %>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'rubygems'
4
+ require 'sinatra'
5
+
6
+ gem 'sinatra-static-assets'
7
+ require 'sinatra/static_assets'
8
+
9
+ get "/?" do
10
+ @title = "Tatra Mountains, Dolina Gąsienicowa (1500 m)"
11
+ erb :index
12
+ end
@@ -0,0 +1,7 @@
1
+ # run with: thin --rackup config.ru -p 4567 start
2
+
3
+ require 'app2'
4
+
5
+ use Rack::ShowExceptions
6
+ use Rack::Static, :urls => ["/stylesheets", "/javascripts", "/images"], :root => "public"
7
+ run Sinatra::Application
@@ -0,0 +1 @@
1
+ /* app1.js */
@@ -0,0 +1,18 @@
1
+ /*
2
+ Theme for app2: http://www.colourlovers.com/palette/81363/rainy
3
+ */
4
+
5
+ html {
6
+ margin: 0;
7
+ padding: 0;
8
+ background: #659DF1 url(src/skating.png);
9
+ }
10
+
11
+ body {
12
+ width: 600px;
13
+ margin: 1em auto;
14
+ padding: 1em 2em;
15
+ border: black solid 1px;
16
+ background-color: #D8E8FF;
17
+ font: normal 14px/1.6 Arial, Helvetica, sans-serif;
18
+ }
File without changes
@@ -0,0 +1,3 @@
1
+ <h2><%= @title %></h2>
2
+
3
+ <p><%= image_tag "/images/tatry2.jpg", :alt => @title, :title => @title %></p>
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/html4/strict.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
+
6
+ <link charset="utf-8" href="/stylesheets/app2.css" media="screen" rel="stylesheet" type="text/css">
7
+ <script charset="utf-8" src="/javascripts/app2.js" type="text/javascript"></script>
8
+
9
+ <title><%= @title %></title>
10
+ </head>
11
+
12
+ <body>
13
+
14
+ <%= yield %>
15
+
16
+ </body>
17
+ </html>
@@ -0,0 +1,14 @@
1
+ require 'mapp'
2
+
3
+ Mapp1 = Rack::Builder.new do
4
+ use Rack::ShowExceptions
5
+ use Rack::Lint
6
+
7
+ use Rack::Static, :urls => ["/stylesheets", "/images"], :root => "public"
8
+
9
+ map '/' do
10
+ run Sinatra::Mapp1.new
11
+ end
12
+ end
13
+
14
+ run Mapp1
@@ -0,0 +1,24 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'sinatra/base'
4
+
5
+ gem 'sinatra-static-assets'
6
+ require 'sinatra/static_assets'
7
+
8
+ module Sinatra
9
+ class Mapp1 < Sinatra::Base
10
+ helpers Sinatra::UrlForHelper
11
+ helpers Sinatra::StaticAssets
12
+
13
+ set :app_file, __FILE__
14
+ set :static, true
15
+
16
+ #set :root, File.dirname(__FILE__)
17
+ #set :views, Proc.new { File.join(root, "views") }
18
+
19
+ get '/' do
20
+ @title = "Tatra Mountains, Błyszcz (2159 m)"
21
+ erb :app
22
+ end
23
+ end
24
+ end
@@ -0,0 +1 @@
1
+ /* mapp1 */
@@ -0,0 +1,14 @@
1
+ html {
2
+ margin: 0;
3
+ padding: 0;
4
+ background: #ABA418 url(src/background.png);
5
+ }
6
+
7
+ body {
8
+ width: 600px;
9
+ margin: 1em auto;
10
+ padding: 1em 2em;
11
+ border: black solid 1px;
12
+ background-color: #D1C704;
13
+ font: normal 14px/1.6 Arial, Helvetica, sans-serif;
14
+ }
File without changes
@@ -0,0 +1,3 @@
1
+ <h2><%= @title %></h2>
2
+
3
+ <p><%= image_tag "/images/tatry1.jpg", :closed => true, :alt => @title, :title => @title %></p>
@@ -0,0 +1,23 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/html4/strict.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
+
6
+ <!-- does not work
7
+
8
+ <link charset="utf-8" href="/stylesheets/mapp.css" media="screen" rel="stylesheet" type="text/css">
9
+
10
+ -->
11
+
12
+ <%= stylesheet_link_tag "/stylesheets/mapp.css" %>
13
+ <%= javascript_script_tag "/javascripts/mapp.js" %>
14
+
15
+ <title><%= @title %></title>
16
+ </head>
17
+
18
+ <body>
19
+
20
+ <%= yield %>
21
+
22
+ </body>
23
+ </html>
@@ -0,0 +1,14 @@
1
+ require 'mapp'
2
+
3
+ Mapp2 = Rack::Builder.new do
4
+ use Rack::ShowExceptions
5
+ use Rack::Lint
6
+
7
+ use Rack::Static, :urls => ["/stylesheets", "/images"], :root => "public"
8
+
9
+ map '/' do
10
+ run Sinatra::Mapp2.new
11
+ end
12
+ end
13
+
14
+ run Mapp2
@@ -0,0 +1,21 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'sinatra/base'
4
+
5
+ gem 'sinatra-static-assets'
6
+ require 'sinatra/static_assets'
7
+
8
+ module Sinatra
9
+ class Mapp2 < Sinatra::Base
10
+ helpers Sinatra::UrlForHelper
11
+ helpers Sinatra::StaticAssets
12
+
13
+ set :app_file, __FILE__
14
+ set :static, true
15
+
16
+ get '/' do
17
+ @title = "Tatra Mountains, Dolina Gąsienicowa (1500 m)"
18
+ erb :mapp
19
+ end
20
+ end
21
+ end
@@ -0,0 +1 @@
1
+ /* mapp.js */
@@ -0,0 +1,14 @@
1
+ html {
2
+ margin: 0;
3
+ padding: 0;
4
+ background: #ABA418 url(src/background.png);
5
+ }
6
+
7
+ body {
8
+ width: 600px;
9
+ margin: 1em auto;
10
+ padding: 1em 2em;
11
+ border: black solid 1px;
12
+ background-color: #D8E8FF;
13
+ font: normal 14px/1.6 Arial, Helvetica, sans-serif;
14
+ }
File without changes
@@ -0,0 +1,16 @@
1
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" http://www.w3.org/TR/html4/strict.dtd">
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
+ <%= stylesheet_link_tag "/stylesheets/mapp.css" %>
6
+ <%= javascript_script_tag "/javascripts/mapp.js" %>
7
+
8
+ <title><%= @title %></title>
9
+ </head>
10
+
11
+ <body>
12
+
13
+ <%= yield %>
14
+
15
+ </body>
16
+ </html>
@@ -0,0 +1,3 @@
1
+ <h2><%= @title %></h2>
2
+
3
+ <p><%= image_tag "/images/tatry2.jpg", :closed => true, :alt => @title, :title => @title %></p>
@@ -0,0 +1,19 @@
1
+ require 'mapp1/mapp'
2
+ require 'mapp2/mapp'
3
+
4
+ Mapp = Rack::Builder.new do
5
+ use Rack::ShowExceptions
6
+ use Rack::Lint
7
+
8
+ #use Rack::Static, :urls => ["/stylesheets", "/images"], :root => "public"
9
+
10
+ map '/mapp1' do
11
+ run Sinatra::Mapp1.new
12
+ end
13
+
14
+ map '/mapp2' do
15
+ run Sinatra::Mapp2.new
16
+ end
17
+ end
18
+
19
+ run Mapp
@@ -0,0 +1,76 @@
1
+ require 'rack/utils'
2
+
3
+ gem 'hpricot', '>=0.8.1'
4
+ require 'hpricot'
5
+
6
+ module Rack
7
+ class StaticAssets
8
+ include Rack::Utils
9
+
10
+ FORMAT = %{%s - [%s] [%s] "%s %s%s %s" (%s) %d %d %0.4f\n}
11
+
12
+ def initialize(app, opts = {})
13
+ @app = app
14
+
15
+ @opts = { :assets => "http://www.google.com/jsapi" }
16
+ @opts.merge! opts
17
+ end
18
+
19
+ def call(env)
20
+ began_at = Time.now
21
+ status, headers, response = @app.call(env)
22
+ headers = HeaderHash.new(headers)
23
+
24
+ if !STATUS_WITH_NO_ENTITY_BODY.include?(status) &&
25
+ !headers['transfer-encoding'] &&
26
+ headers['content-type'] &&
27
+ headers['content-type'].include?("text/html")
28
+
29
+ content = ""
30
+ response.each { |part| content += part }
31
+ doc = Hpricot(content)
32
+
33
+ # nodes = doc.search(@opts[:element])
34
+ # nodes.each do |node|
35
+ # s = node.inner_html || "[++where is the code?++]"
36
+ # node.parent.swap(send(@highlighter, s))
37
+ # end
38
+
39
+ body = doc.to_html
40
+
41
+ # headers['content-length'] = body.bytesize.to_s
42
+ headers.delete('content-length') # will be set by Rack::ContentLength
43
+
44
+ log(env, status, headers, began_at) if @opts[:logging]
45
+ [status, headers, [body]]
46
+ else
47
+ [status, headers, response]
48
+ end
49
+ end
50
+
51
+ private
52
+
53
+ def log(env, status, headers, began_at)
54
+ # lilith.local [coderay] text/html [26/may/2009 12:00:00] "GET / HTTP/1.1" 200 ? ?\n
55
+ now = Time.now
56
+ logger = env['rack.errors']
57
+ logger.write FORMAT % [
58
+ env['HTTP_X_FORWARDED_FOR'] || env["REMOTE_ADDR"] || "-",
59
+ "static assets",
60
+ now.strftime("%d/%b/%Y %H:%M:%S"),
61
+ env["REQUEST_METHOD"],
62
+ env["PATH_INFO"],
63
+ env["QUERY_STRING"].empty? ? "" : "?"+env["QUERY_STRING"],
64
+ env["HTTP_VERSION"],
65
+ headers["content-type"] || "unknown",
66
+ status.to_s[0..3],
67
+ headers['content-length'],
68
+ now - began_at
69
+ ]
70
+ end
71
+
72
+ def rewrite_asset_tag(element)
73
+ end
74
+
75
+ end
76
+ end
metadata ADDED
@@ -0,0 +1,126 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: wbzyl-rack-static-assets
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Wlodek Bzyl
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-31 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rack
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: 1.0.0
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: hpricot
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.8.1
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rack-test
37
+ type: :development
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: 0.3.0
44
+ version:
45
+ description: Static Assets Middleware is useful.
46
+ email: matwb@univ.gda.pl
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files:
52
+ - LICENSE
53
+ - README.markdown
54
+ files:
55
+ - examples/apache-virtualhost.conf
56
+ - examples/app1/app1.rb
57
+ - examples/app1/config.ru
58
+ - examples/app1/public/images/tatry1.jpg
59
+ - examples/app1/public/javascripts/app1.js
60
+ - examples/app1/public/stylesheets/app1.css
61
+ - examples/app1/public/stylesheets/src/bronzed_olive.png
62
+ - examples/app1/tmp/always_restart.txt
63
+ - examples/app1/views/index.erb
64
+ - examples/app1/views/layout.erb
65
+ - examples/app2/app2.rb
66
+ - examples/app2/config.ru
67
+ - examples/app2/public/images/tatry2.jpg
68
+ - examples/app2/public/javascripts/app2.js
69
+ - examples/app2/public/stylesheets/app2.css
70
+ - examples/app2/public/stylesheets/src/skating.png
71
+ - examples/app2/tmp/always_restart.txt
72
+ - examples/app2/views/index.erb
73
+ - examples/app2/views/layout.erb
74
+ - examples/mapp1/config.ru
75
+ - examples/mapp1/mapp.rb
76
+ - examples/mapp1/public/images/tatry1.jpg
77
+ - examples/mapp1/public/javascripts/mapp.js
78
+ - examples/mapp1/public/stylesheets/mapp.css
79
+ - examples/mapp1/public/stylesheets/src/background.png
80
+ - examples/mapp1/tmp/always_restart.txt
81
+ - examples/mapp1/views/app.erb
82
+ - examples/mapp1/views/layout.erb
83
+ - examples/mapp2/config.ru
84
+ - examples/mapp2/mapp.rb
85
+ - examples/mapp2/public/images/tatry2.jpg
86
+ - examples/mapp2/public/javascripts/mapp.js
87
+ - examples/mapp2/public/stylesheets/mapp.css
88
+ - examples/mapp2/public/stylesheets/src/background.png
89
+ - examples/mapp2/tmp/always_restart.txt
90
+ - examples/mapp2/views/layout.erb
91
+ - examples/mapp2/views/mapp.erb
92
+ - examples/mconfig.ru
93
+ - lib/rack/static-assets.rb
94
+ - LICENSE
95
+ - README.markdown
96
+ has_rdoc: false
97
+ homepage: http://github.com/wbzyl/rack-static-assets
98
+ post_install_message:
99
+ rdoc_options:
100
+ - --charset=UTF-8
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: "0"
108
+ version:
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: "0"
114
+ version:
115
+ requirements: []
116
+
117
+ rubyforge_project:
118
+ rubygems_version: 1.2.0
119
+ signing_key:
120
+ specification_version: 3
121
+ summary: Rack Static Assets Middleware
122
+ test_files:
123
+ - examples/app2/app2.rb
124
+ - examples/mapp2/mapp.rb
125
+ - examples/mapp1/mapp.rb
126
+ - examples/app1/app1.rb