wbzyl-sinatra-static-assets 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.markdown CHANGED
@@ -1,91 +1,107 @@
1
- # *StaticAssets* Sinatra Extension
1
+ # Sinatra Extension: StaticAssets
2
2
 
3
- To install it, run:
3
+ Gem *sinatra-static-assets* implements the following helpers methods:
4
+
5
+ * `stylesheet_link_tag`
6
+ * `javascript_script_tag`
7
+ * `image_tag`
8
+ * `link_tag`
9
+
10
+ To install it, run from the command line:
4
11
 
5
12
  sudo gem install wbzyl-sinatra-static-assets -s http://gems.github.com
6
13
 
7
- To use, include it in a Sinatra application:
14
+ All methods are simple wrappers around the `url_for` method
15
+ from the [sinatra-url-for](http://github.com/emk/sinatra-url-for/).
8
16
 
9
- require 'rubygems'
10
- gem 'wbzyl-sinatra-static-assets'
11
- require 'sinatra/static_assets'
17
+ ## When will you need it?
12
18
 
13
- ## When you will need this gem?
19
+ Whenever you use the
20
+ [Passenger module for Apache2](http://www.modrails.com/documentation/Users%20guide%20Apache.html#deploying_rack_to_sub_uri)
21
+ or use `Rack::URLMap` to dispatch an application to
22
+ sub URI.
14
23
 
15
- In short, whenever two or more applications are deployed to sub-URI
16
- with Phussion Passenger.
24
+ Suppose that we already have a virtual host `hitch.local`
25
+ and two Sinatra application which live in
26
+ `/home/me/www/summer` and `/home/me/www/winter`
27
+ directories, respectively.
28
+ We want our Sinatra applications to be accessible from the URLs:
29
+ `http://hitch.local/summer` and `http://hitch.local/winter`.
17
30
 
18
- This means, that we want these applications to be mounted
19
- under one host, `http://example.org` in the example below:
31
+ To configure Apache2 and Passenger to serve our applications
32
+ we create a new configuration file with the content:
20
33
 
21
- http://example.org/app1
22
- http://example.org/app2
23
- ...
24
- http://example.org/tests/app3
25
- http://example.org/secret/app3
26
- ...
34
+ <VirtualHost *:80>
35
+ ServerName hitch.local
36
+ DocumentRoot /srv/www/hitch.local
37
+
38
+ RackBaseURI /summer
39
+ RackBaseURI /winter
40
+ </VirtualHost>
27
41
 
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.
42
+ and link the applications directories in `/srv/www/hitch.local`:
31
43
 
44
+ ln -s /home/me/www/summer/public /srv/www/hitch.local/summer
45
+ ln -s /home/me/www/winter/public /srv/www/hitch.local/winter
32
46
 
33
- *How to fix broken images/CSS/JavaScript URIs in sub-URI deployments*
47
+ After restarting the Apache2 server and visiting, for example the
48
+ first application at `http://hitch.local/summer` we see that links to
49
+ images, stylesheets and javascripts are broken.
34
50
 
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.
51
+ The hitch here is that in Sinatra apps we usually refer to
52
+ images/stylesheets/javascripts with absolute URI:
45
53
 
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:
54
+ /images/tatry1.jpg /stylesheets/app.css /javascripts/app.js
53
55
 
54
- <%= image_tag("foo.jpg") %>
56
+ That setup **works** whenever we are running applications locally.
57
+ The absolute URI above tells browser to load images
58
+ (stylesheets and javascripts) from:
55
59
 
56
- This will generate the proper image tag to
60
+ http://localhost:4567/images/tatry1.jpg
57
61
 
58
- $RAILS_ROOT/public/images/foo.jpg
62
+ which in turn refer to:
59
63
 
60
- so that your images will always work
61
- no matter what sub-URI you've deployed to.
64
+ /home/me/www/summer/public/images/tatry1.jpg
62
65
 
63
- ## Deploying to a sub URI
66
+ And this is the **correct** directory with the default setup of Sinatra
67
+ application.
64
68
 
65
- Add to */etc/hosts*:
69
+ But these absolute URIs do not work whenever, for example,
70
+ the *summer* application is dispatched to sub URI.
71
+ Now, images are at:
66
72
 
67
- 127.0.0.1 localhost.localdomain localhost sinatra.local
73
+ http://hitch.local/summer/images/tatry1.jpg
68
74
 
69
- Sym link the application:
75
+ but we request images from:
70
76
 
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
77
+ http://hitch.local/images/tatry1.jpg
73
78
 
74
- Add to */etc/httpd/conf.d/sinatra.conf*
79
+ And this **does not work** beacause there is no application
80
+ dispatched to *images* sub URI.
75
81
 
76
- <VirtualHost *:80>
77
- ServerName sinatra.local
78
- DocumentRoot /srv/www/sinatra
79
-
80
- RackBaseURI /app1
81
- RackBaseURI /app2
82
- </VirtualHost>
82
+ The recommended way to cope with broken links is to use helper
83
+ methods which automatically take of *prepending*
84
+ the *RackBaseURI* that we have dispatched application to.
83
85
 
84
- Now, goto to `http://sinatra.local/app1` or `http://sinatra.local/app2`.
86
+ In the above example you would simply remove the `<img>` HTML tag
87
+ and replace it with inline Ruby like this:
88
+
89
+ <%= image_tag("/images/tatry1.jpg", :alt => "Błyszcz, 2159 m") %>
90
+
91
+ See also, [How to fix broken images/CSS/JavaScript URIs in sub-URI
92
+ deployments](http://www.modrails.com/documentation/Users%20guide%20Apache.html#sub_uri_deployment_uri_fix)
93
+
94
+ ## Usage examples
95
+
96
+ To use, include it in a Sinatra application:
97
+
98
+ require 'rubygems'
99
+ gem 'wbzyl-sinatra-static-assets'
100
+ require 'sinatra/static_assets'
85
101
 
86
102
 
87
- ## TODO
103
+ ## Miscellaneous stuff
88
104
 
89
- 1. Append a timestamp to the URI to better facilitate HTTP
90
- caching. For more information, see the Rails API docs.
105
+ [UNIX] To create virual host, add to */etc/hosts*:
91
106
 
107
+ 127.0.0.1 localhost.localdomain localhost hitch.local
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :major: 0
3
3
  :minor: 0
4
- :patch: 8
4
+ :patch: 9
@@ -0,0 +1,4 @@
1
+ require 'summer'
2
+
3
+ use Rack::ShowExceptions
4
+ run Sinatra::Application
File without changes
@@ -0,0 +1 @@
1
+ /* summer: app.js */
@@ -1,9 +1,8 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- require 'rubygems'
4
3
  require 'sinatra'
5
4
 
6
- gem 'sinatra-static-assets'
5
+ gem 'wbzyl-sinatra-static-assets'
7
6
  require 'sinatra/static_assets'
8
7
 
9
8
  get "/?" do
File without changes
File without changes
@@ -2,8 +2,8 @@
2
2
  <html>
3
3
  <head>
4
4
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
5
- <%= stylesheet_link_tag "/stylesheets/app1.css" %>
6
- <%= javascript_script_tag "/javascripts/app1.js" %>
5
+ <%= stylesheet_link_tag "/stylesheets/app.css" %>
6
+ <%= javascript_script_tag "/javascripts/app.js" %>
7
7
 
8
8
  <title><%= @title %></title>
9
9
  </head>
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
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.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wlodek Bzyl
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-31 00:00:00 -07:00
12
+ date: 2009-06-01 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -64,24 +64,6 @@ extra_rdoc_files:
64
64
  files:
65
65
  - TODO
66
66
  - VERSION.yml
67
- - examples/app1/app1.rb
68
- - examples/app1/config.ru
69
- - examples/app1/public/images/tatry1.jpg
70
- - examples/app1/public/javascripts/app1.js
71
- - examples/app1/public/stylesheets/app1.css
72
- - examples/app1/public/stylesheets/src/bronzed_olive.png
73
- - examples/app1/tmp/always_restart.txt
74
- - examples/app1/views/index.erb
75
- - examples/app1/views/layout.erb
76
- - examples/app2/app2.rb
77
- - examples/app2/config.ru
78
- - examples/app2/public/images/tatry2.jpg
79
- - examples/app2/public/javascripts/app2.js
80
- - examples/app2/public/stylesheets/app2.css
81
- - examples/app2/public/stylesheets/src/skating.png
82
- - examples/app2/tmp/always_restart.txt
83
- - examples/app2/views/index.erb
84
- - examples/app2/views/layout.erb
85
67
  - examples/mapp1/config.ru
86
68
  - examples/mapp1/mapp.rb
87
69
  - examples/mapp1/public/images/tatry1.jpg
@@ -101,7 +83,24 @@ files:
101
83
  - examples/mapp2/views/layout.erb
102
84
  - examples/mapp2/views/mapp.erb
103
85
  - examples/mconfig.ru
104
- - examples/sinatra.conf
86
+ - examples/summer/config.ru
87
+ - examples/summer/public/images/tatry1.jpg
88
+ - examples/summer/public/javascripts/app.js
89
+ - examples/summer/public/stylesheets/app.css
90
+ - examples/summer/public/stylesheets/src/bronzed_olive.png
91
+ - examples/summer/summer.rb
92
+ - examples/summer/tmp/always_restart.txt
93
+ - examples/summer/views/index.erb
94
+ - examples/summer/views/layout.erb
95
+ - examples/winter/app2.rb
96
+ - examples/winter/config.ru
97
+ - examples/winter/public/images/tatry2.jpg
98
+ - examples/winter/public/javascripts/app2.js
99
+ - examples/winter/public/stylesheets/app2.css
100
+ - examples/winter/public/stylesheets/src/skating.png
101
+ - examples/winter/tmp/always_restart.txt
102
+ - examples/winter/views/index.erb
103
+ - examples/winter/views/layout.erb
105
104
  - lib/sinatra/static_assets.rb
106
105
  - test/sinatra_static_assets_test.rb
107
106
  - test/test_helper.rb
@@ -136,7 +135,7 @@ summary: Sinatra extension providing helper methods to output tags for static as
136
135
  test_files:
137
136
  - test/test_helper.rb
138
137
  - test/sinatra_static_assets_test.rb
139
- - examples/app2/app2.rb
138
+ - examples/summer/summer.rb
140
139
  - examples/mapp2/mapp.rb
141
140
  - examples/mapp1/mapp.rb
142
- - examples/app1/app1.rb
141
+ - examples/winter/app2.rb
@@ -1,7 +0,0 @@
1
- # run with: thin --rackup config.ru -p 4567 start
2
-
3
- require 'app1'
4
-
5
- use Rack::ShowExceptions
6
- use Rack::Static, :urls => ["/stylesheets", "/javascripts", "/images"], :root => "public"
7
- run Sinatra::Application
@@ -1 +0,0 @@
1
- /* app1.js */
@@ -1,18 +0,0 @@
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>