haml-server 0.2 → 0.3
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/bin/haml-server +123 -2
- metadata +46 -44
data/bin/haml-server
CHANGED
@@ -62,11 +62,107 @@
|
|
62
62
|
# :css
|
63
63
|
# @import url(/stylesheets/screen.css);
|
64
64
|
|
65
|
+
##### Helpers
|
66
|
+
|
67
|
+
# You can create a file called `helpers.rb` to define any helpers you might
|
68
|
+
# want to make available.
|
69
|
+
#
|
70
|
+
# # helpers.rb
|
71
|
+
# require "pygmentize"
|
72
|
+
#
|
73
|
+
# def highlight(code, format)
|
74
|
+
# Pygmentize.process(code, format)
|
75
|
+
# end
|
76
|
+
#
|
77
|
+
# alias hi highlight
|
78
|
+
#
|
79
|
+
# And then in your views, you can access the helpers:
|
80
|
+
#
|
81
|
+
# # index.haml
|
82
|
+
#
|
83
|
+
# %h3 Example code
|
84
|
+
# ~ hi "puts '1 + 2 # => 3'", :ruby
|
85
|
+
#
|
86
|
+
# The helpers are reloaded before each request, so you can add and remove them
|
87
|
+
# without restarting the server.
|
88
|
+
|
89
|
+
#### Running on Heroku (cedar stack)
|
90
|
+
|
91
|
+
# With Heroku's cedar stack, it's now super easy to deploy your `haml-server`
|
92
|
+
# site for anyone to see. Here's a step-by-step walkthrough for deploying to
|
93
|
+
# Heroku, with some recommendations for how to structe the site.
|
94
|
+
|
95
|
+
##### Structure
|
96
|
+
|
97
|
+
# Since we'll be adding some additional files to get things wired up, I
|
98
|
+
# recommend you move your views and static files into a separate folder like
|
99
|
+
# `site` (the walkthrough will assume that you've done so). So your site might
|
100
|
+
# look like this:
|
101
|
+
#
|
102
|
+
# > tree
|
103
|
+
# .
|
104
|
+
# ├── helpers.rb
|
105
|
+
# └── site
|
106
|
+
# ├── index.haml
|
107
|
+
# ├── layout.haml
|
108
|
+
# └── screen.css
|
109
|
+
#
|
110
|
+
# When working locally, then, you'll want to run the site with: `haml-server
|
111
|
+
# site`.
|
112
|
+
#
|
113
|
+
# Now to get things set up for Heroku, we'll need to add a few files:
|
114
|
+
#
|
115
|
+
# # Gemfile
|
116
|
+
# source :rubygems
|
117
|
+
# gem "haml-server"
|
118
|
+
#
|
119
|
+
# # Procfile
|
120
|
+
# web: bundle exec haml-server -p $PORT site
|
121
|
+
#
|
122
|
+
# Now the project should look like this:
|
123
|
+
#
|
124
|
+
# > tree
|
125
|
+
# .
|
126
|
+
# ├── Gemfile
|
127
|
+
# ├── Procfile
|
128
|
+
# ├── helpers.rb
|
129
|
+
# └── site
|
130
|
+
# ├── index.haml
|
131
|
+
# ├── layout.haml
|
132
|
+
# └── screen.css
|
133
|
+
|
134
|
+
##### Deploy
|
135
|
+
|
136
|
+
# First we'll need to get our environment in order by running:
|
137
|
+
# > gem install bundler
|
138
|
+
# > bundle
|
139
|
+
#
|
140
|
+
# This will install any dependencies, and store those in a file called
|
141
|
+
# `Gemfile.lock`.
|
142
|
+
#
|
143
|
+
# Now we should set up the site as a `git` repository, and commit our files.
|
144
|
+
#
|
145
|
+
# > git init
|
146
|
+
# > git add .
|
147
|
+
# > git commit -m "Initial commit"
|
148
|
+
#
|
149
|
+
# We're almost done! Now we'll create a new application and deploy it:
|
150
|
+
#
|
151
|
+
# > gem install heroku
|
152
|
+
# > heroku apps:create --stack cedar
|
153
|
+
# > git push heroku master
|
154
|
+
# > heroku open
|
155
|
+
#
|
156
|
+
# `heroku open` will open up your site in the browser. Done!
|
157
|
+
|
65
158
|
#### The code
|
66
159
|
|
67
160
|
# `HAML`, check!
|
68
161
|
require "haml"
|
69
162
|
|
163
|
+
# `SASS`, check!
|
164
|
+
require "sass"
|
165
|
+
|
70
166
|
# Okay. In any other context, this would be pretty evil. Let me explain.
|
71
167
|
# Sinatra is a well-behaving citizen, and calls `ARGV.dup` before parsing its
|
72
168
|
# options. Unfortunately for us, that means if we want to easily add
|
@@ -96,18 +192,43 @@ require "pathname"
|
|
96
192
|
|
97
193
|
template_dir = Pathname(Dir.pwd) + (ARGV.shift || ".")
|
98
194
|
|
99
|
-
set :
|
100
|
-
set :views
|
195
|
+
set :public_folder, template_dir
|
196
|
+
set :views, template_dir
|
101
197
|
|
102
198
|
# If a favicon wasn't already matched by the public handler, just return a 404.
|
103
199
|
get "/favicon.ico" do
|
104
200
|
404
|
105
201
|
end
|
106
202
|
|
203
|
+
# This will be a container module for user-defined helpers. `Helpers.reload!`
|
204
|
+
# will clean up any existing methods in the module, and then load helpers
|
205
|
+
# defined in a `helpers.rb` file if it exists.
|
206
|
+
module Helpers
|
207
|
+
class << self
|
208
|
+
def reload!
|
209
|
+
# First we remove all instance methods in the helper module.
|
210
|
+
instance_methods.each do |method|
|
211
|
+
remove_method(method)
|
212
|
+
end
|
213
|
+
|
214
|
+
# And now we load any helper methods into the module from the file
|
215
|
+
# `helpers.rb` if it exists.
|
216
|
+
module_eval(File.read("helpers.rb")) if File.file?("helpers.rb")
|
217
|
+
end
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
# Include our module into the Sinatra application.
|
222
|
+
helpers Helpers
|
223
|
+
|
107
224
|
# This is our basic handler for all requests that come through to Sinatra.
|
108
225
|
# We'll extract the necessary path information, and then render either a haml
|
109
226
|
# or sass file.
|
110
227
|
handler = lambda do
|
228
|
+
|
229
|
+
# Reload our helpers for each request.
|
230
|
+
Helpers.reload!
|
231
|
+
|
111
232
|
path = request.path_info
|
112
233
|
|
113
234
|
extension = File.extname(path)
|
metadata
CHANGED
@@ -1,78 +1,80 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: haml-server
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.3'
|
4
5
|
prerelease:
|
5
|
-
version: "0.2"
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Bernerd Schaefer
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-01-11 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
17
15
|
name: sinatra
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70098912206340 !ruby/object:Gem::Requirement
|
20
17
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
24
|
-
version:
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
25
22
|
type: :runtime
|
26
|
-
|
27
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70098912206340
|
25
|
+
- !ruby/object:Gem::Dependency
|
28
26
|
name: haml
|
27
|
+
requirement: &70098912204600 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
29
34
|
prerelease: false
|
30
|
-
|
35
|
+
version_requirements: *70098912204600
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: sass
|
38
|
+
requirement: &70098912203780 !ruby/object:Gem::Requirement
|
31
39
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
35
|
-
version:
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
36
44
|
type: :runtime
|
37
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70098912203780
|
38
47
|
description: Server for HAML files
|
39
48
|
email: bj.schaefer@gmail.com
|
40
|
-
executables:
|
49
|
+
executables:
|
41
50
|
- haml-server
|
42
51
|
extensions: []
|
43
|
-
|
44
52
|
extra_rdoc_files: []
|
45
|
-
|
46
|
-
files:
|
53
|
+
files:
|
47
54
|
- README
|
48
55
|
- bin/haml-server
|
49
|
-
has_rdoc: true
|
50
56
|
homepage: http://github.com/bernerdschaefer/haml-server
|
51
57
|
licenses: []
|
52
|
-
|
53
58
|
post_install_message:
|
54
59
|
rdoc_options: []
|
55
|
-
|
56
|
-
require_paths:
|
60
|
+
require_paths:
|
57
61
|
- lib
|
58
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
63
|
none: false
|
60
|
-
requirements:
|
61
|
-
- -
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version:
|
64
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
69
|
none: false
|
66
|
-
requirements:
|
67
|
-
- -
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
+
requirements:
|
71
|
+
- - ! '>='
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
70
74
|
requirements: []
|
71
|
-
|
72
75
|
rubyforge_project:
|
73
|
-
rubygems_version: 1.
|
76
|
+
rubygems_version: 1.8.10
|
74
77
|
signing_key:
|
75
78
|
specification_version: 3
|
76
79
|
summary: Server for HAML files
|
77
80
|
test_files: []
|
78
|
-
|