wbzyl-sinatra-static-assets 0.0.2 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -1,4 +1,4 @@
1
- # Static Assets Sinatra Extension
1
+ # *StaticAssets* Sinatra Extension
2
2
 
3
3
  To install it, run:
4
4
 
@@ -10,15 +10,27 @@ To use, include it in a Sinatra application:
10
10
  gem 'wbzyl-sinatra-static-assets'
11
11
  require 'sinatra/static_assets'
12
12
 
13
- If you're subclassing *Sinatra::Base*, then you need to call helpers manually:
13
+ ## When you will need this gem?
14
14
 
15
- class MyApp < Sinatra::Base
16
- helpers Sinatra::StaticAssets
17
- # ...
18
- end
15
+ In short, whenever two or more applications are deployed to sub-URI
16
+ with Phussion Passenger.
19
17
 
18
+ This means, that we want these applications to be mounted
19
+ under one host, `http://example.org` in the example below:
20
20
 
21
- ## Passenger: 8.7. How to fix broken images/CSS/JavaScript URIs in sub-URI deployments
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*
22
34
 
23
35
  Some people experience broken images and other broken static assets
24
36
  when they deploy their application to a sub-URI
@@ -48,11 +60,6 @@ This will generate the proper image tag to
48
60
  so that your images will always work
49
61
  no matter what sub-URI you've deployed to.
50
62
 
51
- These helper methods are more valuable than you may think. For example
52
- they also append a timestamp to the URI to better facilitate HTTP
53
- caching. For more information, please refer to the Rails API docs.
54
-
55
-
56
63
  ## Deploying to a sub URI
57
64
 
58
65
  Add to */etc/hosts*:
@@ -74,8 +81,11 @@ Add to */etc/httpd/conf.d/sinatra.conf*
74
81
  RackBaseURI /app2
75
82
  </VirtualHost>
76
83
 
77
- Goto:
84
+ Now, goto to `http://sinatra.local/app1` or `http://sinatra.local/app2`.
85
+
86
+
87
+ ## TODO
78
88
 
79
- http://sinatra.rails/app1/
89
+ 1. Append a timestamp to the URI to better facilitate HTTP
90
+ caching. For more information, see the Rails API docs.
80
91
 
81
- Note the terminating slash.
data/Rakefile CHANGED
@@ -27,11 +27,3 @@ Rake::TestTask.new(:test) do |t|
27
27
  t.pattern = 'test/**/*_test.rb'
28
28
  t.verbose = false
29
29
  end
30
-
31
- desc 'Install the package as a gem.'
32
- task :install => [:clean, :build] do
33
- gem = Dir['pkg/*.gem'].last
34
- sh "sudo gem install --no-rdoc --no-ri --local #{gem}"
35
- end
36
-
37
- task :default => :test
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 2
2
+ :patch: 5
3
3
  :major: 0
4
4
  :minor: 0
@@ -6,7 +6,7 @@ require 'sinatra'
6
6
  gem 'sinatra-static-assets'
7
7
  require 'sinatra/static_assets'
8
8
 
9
- get "/" do
9
+ get "/?" do
10
10
  @title = "Tatra Mountains, Błyszcz (2159 m)"
11
11
  erb :index
12
12
  end
@@ -1,9 +1,7 @@
1
1
  # run with: thin --rackup config.ru -p 4567 start
2
2
 
3
- require 'app'
4
-
5
- # default with passenger
3
+ require 'app1'
6
4
 
5
+ use Rack::ShowExceptions
7
6
  use Rack::Static, :urls => ["/stylesheets", "/javascripts", "/images"], :root => "public"
8
-
9
7
  run Sinatra::Application
@@ -1,3 +1,3 @@
1
1
  <h2><%= @title %></h2>
2
2
 
3
- <p><%= image_tag "/images/tatry1.jpg", :alt => @title, :title => @title %></p>
3
+ <p><%= image_tag "/images/tatry1.jpg", :closed => true, :alt => @title, :title => @title %></p>
@@ -3,7 +3,8 @@
3
3
  <head>
4
4
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
5
 
6
- <link rel="stylesheet" href="/stylesheets/app1.css" type="text/css" media="screen" charset="utf-8">
6
+ <%= stylesheet_link_tag "/stylesheets/app1.css" %>
7
+
7
8
  <script src="/javascripts/app1.js" type="text/javascript"></script>
8
9
 
9
10
  <title><%= @title %></title>
@@ -6,7 +6,7 @@ require 'sinatra'
6
6
  gem 'sinatra-static-assets'
7
7
  require 'sinatra/static_assets'
8
8
 
9
- get "/" do
9
+ get "/?" do
10
10
  @title = "Tatra Mountains, Dolina Gąsienicowa (1500 m)"
11
11
  erb :index
12
12
  end
@@ -1,9 +1,7 @@
1
1
  # run with: thin --rackup config.ru -p 4567 start
2
2
 
3
- require 'app'
4
-
5
- # default with passenger
3
+ require 'app2'
6
4
 
5
+ use Rack::ShowExceptions
7
6
  use Rack::Static, :urls => ["/stylesheets", "/javascripts", "/images"], :root => "public"
8
-
9
7
  run Sinatra::Application
@@ -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
+ }
@@ -1,28 +1,48 @@
1
+ gem 'sinatra', '~>0.9.2'
1
2
  require 'sinatra/base'
2
3
 
3
- gem 'emk-sinatra-url-for'
4
+ gem 'emk-sinatra-url-for', '>=0.2.1'
4
5
  require 'sinatra/url_for'
5
6
 
6
7
  module Sinatra
7
8
  module StaticAssets
8
-
9
+
10
+ # In HTML the <img> tag has no end tag:
11
+ #
12
+ # image_tag "/images/foo.png", :alt => "Foo itself"
13
+ #
14
+ # In XHTML the <img /> tag must be properly closed:
15
+ #
16
+ # image_tag "/images/foo.png", :alt => "Foo itself", :closed => true
17
+ #
9
18
  def image_tag(source, options = {})
19
+ closed = options.delete(:closed)
10
20
  options[:src] = url_for(source)
11
- tag("img", options)
21
+ tag("img", options, closed)
12
22
  end
13
-
23
+
24
+ # In HTML the <link> tag has no end tag:
25
+ #
26
+ # stylesheet_link_tag "/stylesheets/screen.css", "/stylesheets/print.css"
27
+ #
28
+ # In XHTML the <link> tag must be properly closed:
29
+ #
30
+ # stylesheet_link_tag "/stylesheets/screen.css", :closed => true
31
+ #
14
32
  def stylesheet_link_tag(*sources)
15
- # TODO
33
+ list, options = extract_options(sources)
34
+ closed = options.delete(:closed)
35
+ list.collect { |source| stylesheet_tag(source, options, closed) }.join("\n")
16
36
  end
17
-
18
- def javascript_include_tag(*sources)
37
+
38
+ def javascript_script_tag(*sources)
19
39
  # TODO
20
40
  end
21
41
 
22
42
  private
23
43
 
24
- def tag(name, options = nil, open = false)
25
- "<#{name}#{tag_options(options) if options}#{open ? ">" : " />"}"
44
+ def tag(name, options = {}, closed = false)
45
+ "<#{name}#{tag_options(options) if options}#{closed ? " />" : ">"}"
26
46
  end
27
47
 
28
48
  def tag_options(options)
@@ -33,17 +53,21 @@ module Sinatra
33
53
  end
34
54
  end
35
55
 
36
- # html_.. -> url_for..
37
- # <link .. /?> ?
38
- def stylesheet_tag(source, options)
39
- tag("link", { "rel" => "stylesheet", "type" => Mime::CSS, "media" => "screen",
40
- "href" => html_escape(path_to_stylesheet(source)) }.merge(options), false)
56
+ def stylesheet_tag(source, options, closed = false)
57
+ tag("link", { :type => "text/css",
58
+ :charset => "utf-8", :media => "screen", :rel => "stylesheet",
59
+ :href => url_for(source) }.merge(options), closed)
41
60
  end
42
61
 
43
- def javascript_src_tag(source, options)
62
+ def javascript_tag(source, options)
44
63
  # append onto tag </script>
45
64
  end
46
65
 
66
+ def extract_options(a)
67
+ opts = a.last.is_a?(::Hash) ? a.pop : {}
68
+ [a, opts]
69
+ end
70
+
47
71
  end
48
72
 
49
73
  helpers StaticAssets
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{sinatra-static-assets}
5
- s.version = "0.0.2"
5
+ s.version = "0.0.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["W\305\202odek Bzyl"]
9
- s.date = %q{2009-05-22}
9
+ s.date = %q{2009-05-23}
10
10
  s.description = %q{Sinatra extension providing helper methods to output tags for static assets.}
11
11
  s.email = %q{matwb@univ.gda.pl}
12
12
  s.extra_rdoc_files = [
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  "README.markdown",
20
20
  "Rakefile",
21
21
  "VERSION.yml",
22
- "examples/app1/app.rb",
22
+ "examples/app1/app1.rb",
23
23
  "examples/app1/config.ru",
24
24
  "examples/app1/public/images/tatry1.jpg",
25
25
  "examples/app1/public/javascripts/app1.js",
@@ -28,11 +28,12 @@ Gem::Specification.new do |s|
28
28
  "examples/app1/tmp/always_restart.txt",
29
29
  "examples/app1/views/index.erb",
30
30
  "examples/app1/views/layout.erb",
31
- "examples/app2/app.rb",
31
+ "examples/app2/app2.rb",
32
32
  "examples/app2/config.ru",
33
33
  "examples/app2/public/images/tatry2.jpg",
34
34
  "examples/app2/public/javascripts/app2.js",
35
- "examples/app2/public/stylesheets/src/bronzed_olive.png",
35
+ "examples/app2/public/stylesheets/app2.css",
36
+ "examples/app2/public/stylesheets/src/skating.png",
36
37
  "examples/app2/tmp/always_restart.txt",
37
38
  "examples/app2/views/index.erb",
38
39
  "examples/app2/views/layout.erb",
@@ -49,8 +50,8 @@ Gem::Specification.new do |s|
49
50
  s.test_files = [
50
51
  "test/test_helper.rb",
51
52
  "test/sinatra_static_assets_test.rb",
52
- "examples/app2/app.rb",
53
- "examples/app1/app.rb"
53
+ "examples/app2/app2.rb",
54
+ "examples/app1/app1.rb"
54
55
  ]
55
56
 
56
57
  if s.respond_to? :specification_version then
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wbzyl-sinatra-static-assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - "W\xC5\x82odek Bzyl"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-22 00:00:00 -07:00
12
+ date: 2009-05-23 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -37,7 +37,7 @@ files:
37
37
  - README.markdown
38
38
  - Rakefile
39
39
  - VERSION.yml
40
- - examples/app1/app.rb
40
+ - examples/app1/app1.rb
41
41
  - examples/app1/config.ru
42
42
  - examples/app1/public/images/tatry1.jpg
43
43
  - examples/app1/public/javascripts/app1.js
@@ -46,11 +46,12 @@ files:
46
46
  - examples/app1/tmp/always_restart.txt
47
47
  - examples/app1/views/index.erb
48
48
  - examples/app1/views/layout.erb
49
- - examples/app2/app.rb
49
+ - examples/app2/app2.rb
50
50
  - examples/app2/config.ru
51
51
  - examples/app2/public/images/tatry2.jpg
52
52
  - examples/app2/public/javascripts/app2.js
53
- - examples/app2/public/stylesheets/src/bronzed_olive.png
53
+ - examples/app2/public/stylesheets/app2.css
54
+ - examples/app2/public/stylesheets/src/skating.png
54
55
  - examples/app2/tmp/always_restart.txt
55
56
  - examples/app2/views/index.erb
56
57
  - examples/app2/views/layout.erb
@@ -87,5 +88,5 @@ summary: Sinatra extension providing helper methods to output tags for static as
87
88
  test_files:
88
89
  - test/test_helper.rb
89
90
  - test/sinatra_static_assets_test.rb
90
- - examples/app2/app.rb
91
- - examples/app1/app.rb
91
+ - examples/app2/app2.rb
92
+ - examples/app1/app1.rb