homeostasis 0.0.12 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +29 -20
- data/lib/homeostasis.rb +22 -24
- metadata +2 -2
data/README.md
CHANGED
@@ -7,7 +7,7 @@ trailing slashes.
|
|
7
7
|
Installation
|
8
8
|
============
|
9
9
|
|
10
|
-
|
10
|
+
$ gem install homeostasis
|
11
11
|
|
12
12
|
In your controller:
|
13
13
|
|
@@ -36,15 +36,14 @@ You'll end up with something like this:
|
|
36
36
|
|
37
37
|
Generated files in the `public` directory will go through a global search and
|
38
38
|
replace. By default, it'll only do this on `html`, `css`, and `js` files.
|
39
|
-
You can configure this
|
39
|
+
You can configure this with the `replace_matcher` option. You can also
|
40
|
+
configure the regex for asset matching with `matcher`:
|
40
41
|
|
41
|
-
Homeostasis::Asset.
|
42
|
+
Homeostasis::Asset.config(
|
43
|
+
:replace_matcher => /.(html|css|js)$/i,
|
44
|
+
:matcher => /myregex$/i)
|
42
45
|
|
43
|
-
You can
|
44
|
-
|
45
|
-
Homeostasis::Asset.matcher = /myregex$/i
|
46
|
-
|
47
|
-
You can also configure concatenation of multiple assets into a single file:
|
46
|
+
You can concatenate multiple assets into a single file:
|
48
47
|
|
49
48
|
Homeostasis::Asset.concat 'all.js', %w(jquery.js mine.js)
|
50
49
|
Homeostasis::Asset.concat 'all.css', %w(reset.css mine.css)
|
@@ -55,10 +54,10 @@ Blog
|
|
55
54
|
In your controller:
|
56
55
|
|
57
56
|
Homeostasis::Blog.config(
|
58
|
-
'blog',
|
59
|
-
'http://example.com',
|
60
|
-
'Blog Title',
|
61
|
-
'Blog Description for RSS feed')
|
57
|
+
:directory => 'blog', # directory of posts, required
|
58
|
+
:url => 'http://example.com', # site url, required
|
59
|
+
:title => 'Blog Title',
|
60
|
+
:desc => 'Blog Description for RSS feed')
|
62
61
|
|
63
62
|
Post files should be in the format `yyyy-mm-dd-permalink.html.md`. Use
|
64
63
|
YAML front-matter for any metadata you want. `:date` and `:path` will be
|
@@ -98,12 +97,13 @@ ERB comments as well:
|
|
98
97
|
|
99
98
|
You can configure which files to check in `controller.rb`. Here's the default:
|
100
99
|
|
101
|
-
Homeostasis::Front.
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
100
|
+
Homeostasis::Front.config(
|
101
|
+
:matchers => {
|
102
|
+
'erb' => /<%#/,
|
103
|
+
'haml' => /-#/,
|
104
|
+
'html' => /<!--/,
|
105
|
+
'md' => /<!--/
|
106
|
+
})
|
107
107
|
|
108
108
|
Just start the file with YAML inside a comment with 2-space indentation. The
|
109
109
|
data will be available from the `front` method in your views and controller.
|
@@ -119,7 +119,10 @@ Sitemap
|
|
119
119
|
A sitemap will automatically be generated in `public/sitemap.xml`. You'll need
|
120
120
|
to set the root URL for this to happen:
|
121
121
|
|
122
|
-
Homeostasis::Sitemap.
|
122
|
+
Homeostasis::Sitemap.config(
|
123
|
+
:url => 'http://example.com', # required
|
124
|
+
:lastmod => false # default is true
|
125
|
+
)
|
123
126
|
|
124
127
|
`loc` and `lastmod` will be generated for each page. Use front-yaml to set the
|
125
128
|
`changefreq` or `priority`:
|
@@ -154,8 +157,14 @@ You'll get:
|
|
154
157
|
This works well with an `htaccess` file that automatically appends trailing
|
155
158
|
slashes to URLs.
|
156
159
|
|
160
|
+
TODO
|
161
|
+
====
|
162
|
+
|
163
|
+
* make each plugin optional
|
164
|
+
* single version endpoint
|
165
|
+
|
157
166
|
License
|
158
167
|
=======
|
159
168
|
|
160
|
-
Copyright
|
169
|
+
Copyright Hugh Bien - http://hughbien.com.
|
161
170
|
Released under BSD License, see LICENSE.md for more info.
|
data/lib/homeostasis.rb
CHANGED
@@ -6,7 +6,7 @@ require 'yaml'
|
|
6
6
|
require 'cgi'
|
7
7
|
|
8
8
|
module Homeostasis
|
9
|
-
VERSION = '0.0.
|
9
|
+
VERSION = '0.0.13'
|
10
10
|
|
11
11
|
module Helpers
|
12
12
|
private
|
@@ -68,7 +68,6 @@ module Homeostasis
|
|
68
68
|
def after_all
|
69
69
|
assets = {}
|
70
70
|
strip_dest = (@stasis.destination.length + 1)..-1
|
71
|
-
strip_root = (@stasis.root.length + 1)..-1
|
72
71
|
|
73
72
|
# concatenate files with stamps
|
74
73
|
@@orig_concats.each do |concatted, files|
|
@@ -99,7 +98,7 @@ module Homeostasis
|
|
99
98
|
end
|
100
99
|
|
101
100
|
# read contents of each file, search/replace assets with stamps
|
102
|
-
Dir.glob("#{@stasis.destination
|
101
|
+
Dir.glob("#{@stasis.destination}/**/*").each do |file|
|
103
102
|
next if file !~ @@replace_matcher || File.directory?(file)
|
104
103
|
contents = File.read(file)
|
105
104
|
assets.each do |old, new|
|
@@ -128,12 +127,9 @@ module Homeostasis
|
|
128
127
|
Digest::SHA1.hexdigest(versions.join('.'))
|
129
128
|
end
|
130
129
|
|
131
|
-
def self.
|
132
|
-
@@matcher =
|
133
|
-
|
134
|
-
|
135
|
-
def self.replace_matcher=(regex)
|
136
|
-
@@replace_matcher = regex
|
130
|
+
def self.config(options)
|
131
|
+
@@matcher = options[:matcher] if options[:matcher]
|
132
|
+
@@replace_matcher = options[:replace_matcher] if options[:replace_matcher]
|
137
133
|
end
|
138
134
|
|
139
135
|
def self.concat(dest, files)
|
@@ -204,8 +200,8 @@ module Homeostasis
|
|
204
200
|
@@front_site
|
205
201
|
end
|
206
202
|
|
207
|
-
def self.
|
208
|
-
@@matchers =
|
203
|
+
def self.config(options)
|
204
|
+
@@matchers = options[:matchers] if options[:matchers]
|
209
205
|
end
|
210
206
|
|
211
207
|
private
|
@@ -235,7 +231,7 @@ module Homeostasis
|
|
235
231
|
end
|
236
232
|
|
237
233
|
def after_all
|
238
|
-
dest = @stasis.destination
|
234
|
+
dest = @stasis.destination
|
239
235
|
Dir.glob("#{dest}/**/*.html").each do |filename|
|
240
236
|
next if filename =~ /\/index\.html$/
|
241
237
|
dir = "#{filename.sub(/\.html$/, '')}/"
|
@@ -254,8 +250,9 @@ module Homeostasis
|
|
254
250
|
@@url = nil
|
255
251
|
end
|
256
252
|
|
257
|
-
def self.
|
258
|
-
@@url = url
|
253
|
+
def self.config(options)
|
254
|
+
@@url = options[:url]
|
255
|
+
@@lastmod = options[:lastmod] || false
|
259
256
|
end
|
260
257
|
|
261
258
|
def after_all
|
@@ -279,7 +276,7 @@ module Homeostasis
|
|
279
276
|
nil
|
280
277
|
xml += " <url>\n"
|
281
278
|
xml += " <loc>#{h(@@url + front[:path])}</loc>\n" if front[:path]
|
282
|
-
xml += " <lastmod>#{h lastmod}</lastmod>\n" if lastmod
|
279
|
+
xml += " <lastmod>#{h lastmod}</lastmod>\n" if @@lastmod && lastmod
|
283
280
|
xml += " <changefreq>#{h front[:changefreq]}</changefreq>\n" if front[:changefreq]
|
284
281
|
xml += " <priority>#{h front[:priority]}</priority>\n" if front[:priority]
|
285
282
|
xml += " </url>\n"
|
@@ -301,21 +298,22 @@ module Homeostasis
|
|
301
298
|
def initialize(stasis)
|
302
299
|
@stasis = stasis
|
303
300
|
@@directory = nil
|
304
|
-
@@
|
301
|
+
@@url = nil
|
305
302
|
@@title = nil
|
306
303
|
@@desc = nil
|
307
304
|
@@posts = []
|
308
305
|
end
|
309
306
|
|
310
|
-
def self.config(
|
311
|
-
@@directory = directory
|
312
|
-
@@
|
313
|
-
@@title = title
|
314
|
-
@@desc = desc
|
307
|
+
def self.config(options)
|
308
|
+
@@directory = options[:directory]
|
309
|
+
@@url = options[:url]
|
310
|
+
@@title = options[:title]
|
311
|
+
@@desc = options[:desc]
|
315
312
|
end
|
316
313
|
|
317
314
|
def before_all
|
318
315
|
return if @@directory.nil?
|
316
|
+
@@posts = []
|
319
317
|
front_site = Homeostasis::Front._front_site
|
320
318
|
Dir.glob("#{File.join(@stasis.root, @@directory)}/*").each do |filename|
|
321
319
|
next if File.basename(filename) !~ DATE_REGEX
|
@@ -337,17 +335,17 @@ module Homeostasis
|
|
337
335
|
filename,
|
338
336
|
File.join(File.dirname(filename), base.sub(DATE_REGEX, '')))
|
339
337
|
end
|
340
|
-
url = h("#{@@
|
338
|
+
url = h("#{@@url}/#{@@directory}/")
|
341
339
|
rss = "<?xml version=\"1.0\"?>\n"
|
342
340
|
rss += "<rss version=\"2.0\">\n"
|
343
341
|
rss += " <channel>\n"
|
344
342
|
rss += " <title>#{h @@title}</title>\n" if @@title
|
345
|
-
rss += " <link>#{h @@
|
343
|
+
rss += " <link>#{h @@url}/</link>\n" if @@url
|
346
344
|
rss += " <description>#{h @@desc}</description>\n" if @@desc
|
347
345
|
blog_posts[0..5].each do |post|
|
348
346
|
rss += " <item>\n"
|
349
347
|
rss += " <title>#{h post[:title]}</title>\n"
|
350
|
-
rss += " <link>#{h(@@
|
348
|
+
rss += " <link>#{h(@@url + post[:path])}</link>\n"
|
351
349
|
rss += " <pubDate>#{post[:date].strftime('%m-%d-%Y %H:%M')}</pubDate>\n"
|
352
350
|
rss += " <description>#{h post[:body]}</description>\n"
|
353
351
|
rss += " </item>\n"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: homeostasis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.13
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-14 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Provides asset stamping using git revisions, environments, and a few
|
15
15
|
view helpers.
|