gumdrop 1.1.1 → 1.1.2
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/.gitignore +3 -1
- data/ChangeLog.md +6 -0
- data/Notes.md +4 -1
- data/lib/gumdrop/builder.rb +1 -0
- data/lib/gumdrop/cli/internal.rb +1 -0
- data/lib/gumdrop/content.rb +3 -1
- data/lib/gumdrop/data.rb +14 -2
- data/lib/gumdrop/server.rb +2 -2
- data/lib/gumdrop/site.rb +20 -1
- data/lib/gumdrop/support/sprockets.rb +2 -1
- data/lib/gumdrop/support/stitch.rb +3 -1
- data/lib/gumdrop/util/pager.rb +4 -0
- data/lib/gumdrop/util/proxy_handler.rb +1 -1
- data/lib/gumdrop/util/view_helpers.rb +27 -0
- data/lib/gumdrop/version.rb +1 -1
- data/templates/default/Gemfile +4 -3
- metadata +3 -2
data/.gitignore
CHANGED
data/ChangeLog.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# v1.1.2
|
2
|
+
- Added helper for checksums, good for:
|
3
|
+
- Added cache busting support for uris. e.g. "/theme/screen.css?v=HASHHERE445435435ETC"
|
4
|
+
- Added support for `Gumdrop#no_render(*paths)`. Treats all matched paths as binary.
|
5
|
+
- Fixed sprockets load_paths issue.
|
6
|
+
|
1
7
|
# v1.1.1
|
2
8
|
- Cleaned up dependencies.
|
3
9
|
- Some performance and memory optimizations.
|
data/Notes.md
CHANGED
@@ -2,4 +2,7 @@
|
|
2
2
|
|
3
3
|
- Flesh out the test/specs
|
4
4
|
- Support Compass for sass
|
5
|
-
- Support nib for stylus
|
5
|
+
- Support nib for stylus
|
6
|
+
- Remove `Pageset#uri`? Or else make it work right (including/especially via generators)
|
7
|
+
- Update to latest Tilt? Or wait for v2?
|
8
|
+
- Add support for template paths. Will load only layouts and partials from those directories.
|
data/lib/gumdrop/builder.rb
CHANGED
@@ -62,6 +62,7 @@ module Gumdrop
|
|
62
62
|
log.debug " blackout: #{ uri }" and next if site.in_blacklist? uri
|
63
63
|
output_path= site.output_path / content.uri
|
64
64
|
if content.binary?
|
65
|
+
# log.info "BINARY: #{content.path}"
|
65
66
|
@copy_files << { content.source_path => output_path }
|
66
67
|
else
|
67
68
|
rendered_content= renderer.draw content
|
data/lib/gumdrop/cli/internal.rb
CHANGED
@@ -32,6 +32,7 @@ module Gumdrop::CLI
|
|
32
32
|
desc 'server', 'Run development server'
|
33
33
|
method_option :browser, aliases:'-b', default:false, desc:"Launch a browser to the site address."
|
34
34
|
method_option :port, aliases:'-p', default:4567, desc:"Port to run the server on."
|
35
|
+
method_option :env, default:'production', aliases:'-e'
|
35
36
|
def server
|
36
37
|
Gumdrop.configure do |c|
|
37
38
|
c.server_port= options[:port]
|
data/lib/gumdrop/content.rb
CHANGED
@@ -75,7 +75,7 @@ module Gumdrop
|
|
75
75
|
@is_binary ||= begin
|
76
76
|
if generated? or has_block? or missing?
|
77
77
|
false
|
78
|
-
elsif KNOWN_BINARY.include? ext
|
78
|
+
elsif KNOWN_BINARY.include? ext or site.unrenderable? path
|
79
79
|
true
|
80
80
|
else
|
81
81
|
# from ptools
|
@@ -189,6 +189,8 @@ module Gumdrop
|
|
189
189
|
end
|
190
190
|
end
|
191
191
|
|
192
|
+
|
193
|
+
|
192
194
|
class ContentList < Hash
|
193
195
|
|
194
196
|
def initialize
|
data/lib/gumdrop/data.rb
CHANGED
@@ -54,6 +54,18 @@ module Gumdrop
|
|
54
54
|
page_size= opts.fetch(:page_size, 5)
|
55
55
|
Util::Pager.new( data, base_path, page_size )
|
56
56
|
end
|
57
|
+
|
58
|
+
# Not used internally, but useful for external usage
|
59
|
+
def parse_file(path, target_ext=nil)
|
60
|
+
return nil if path.nil?
|
61
|
+
return nil if File.directory? path
|
62
|
+
_load_from_file path, target_ext
|
63
|
+
# if File.directory? path
|
64
|
+
# _load_from_directory path
|
65
|
+
# else
|
66
|
+
# _load_from_file path, target_ext
|
67
|
+
# end
|
68
|
+
end
|
57
69
|
|
58
70
|
private
|
59
71
|
|
@@ -71,8 +83,8 @@ module Gumdrop
|
|
71
83
|
end
|
72
84
|
end
|
73
85
|
|
74
|
-
def _load_from_file( filename )
|
75
|
-
ext=File.extname(filename)[1..-1]
|
86
|
+
def _load_from_file( filename, target_ext=nil )
|
87
|
+
ext= target_ext || File.extname(filename)[1..-1]
|
76
88
|
provider= Data::Provider.for ext
|
77
89
|
case
|
78
90
|
when provider.nil?
|
data/lib/gumdrop/server.rb
CHANGED
@@ -25,14 +25,14 @@ module Gumdrop
|
|
25
25
|
set :port, site.config.server_port if site.config.server_port
|
26
26
|
|
27
27
|
if site.config.proxy_enabled
|
28
|
-
require 'gumdrop/
|
28
|
+
require 'gumdrop/util/proxy_handler'
|
29
29
|
get '/-proxy/*' do handle_proxy(params, env) end
|
30
30
|
post '/-proxy/*' do handle_proxy(params, env) end
|
31
31
|
put '/-proxy/*' do handle_proxy(params, env) end
|
32
32
|
delete '/-proxy/*' do handle_proxy(params, env) end
|
33
33
|
patch '/-proxy/*' do handle_proxy(params, env) end
|
34
34
|
options '/-proxy/*' do handle_proxy(params, env) end
|
35
|
-
log.info 'Enabled proxy at /-proxy/*'
|
35
|
+
# log.info 'Enabled proxy at /-proxy/*'
|
36
36
|
end
|
37
37
|
|
38
38
|
get '/*' do
|
data/lib/gumdrop/site.rb
CHANGED
@@ -16,6 +16,7 @@ module Gumdrop
|
|
16
16
|
log_level: :info,
|
17
17
|
ignore: JETSAM_FILES,
|
18
18
|
blacklist: [],
|
19
|
+
no_render: [],
|
19
20
|
server_timeout: 5,
|
20
21
|
server_port: 4567,
|
21
22
|
env: :production,
|
@@ -116,6 +117,12 @@ module Gumdrop
|
|
116
117
|
end
|
117
118
|
end
|
118
119
|
|
120
|
+
def unrenderable?(path)
|
121
|
+
config.no_render.any? do |pattern|
|
122
|
+
path.path_match? pattern
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
119
126
|
def source_path
|
120
127
|
@source_path ||= source_dir.expand_path(root)
|
121
128
|
end
|
@@ -354,7 +361,7 @@ module Gumdrop
|
|
354
361
|
end
|
355
362
|
end
|
356
363
|
|
357
|
-
# Specified paths will not be
|
364
|
+
# Specified paths will not be rendered to output (matching against
|
358
365
|
# the source tree).
|
359
366
|
def blacklist(*paths)
|
360
367
|
paths.each do |path|
|
@@ -366,6 +373,18 @@ module Gumdrop
|
|
366
373
|
end
|
367
374
|
end
|
368
375
|
|
376
|
+
# Specified paths will be treated as binary files and copied, not
|
377
|
+
# rendered.
|
378
|
+
def no_render(*paths)
|
379
|
+
paths.each do |path|
|
380
|
+
if path.is_a? Array
|
381
|
+
config.no_render.concat path
|
382
|
+
else
|
383
|
+
config.no_render << path
|
384
|
+
end
|
385
|
+
end
|
386
|
+
end
|
387
|
+
|
369
388
|
protected
|
370
389
|
|
371
390
|
# Walks up the filesystem, starting from Dir.pwd, looking for
|
@@ -7,8 +7,9 @@ module Gumdrop::Support
|
|
7
7
|
require 'sprockets'
|
8
8
|
source_path = source_file || opt[:main] || opt[:from]
|
9
9
|
env = ::Sprockets::Environment.new site.root
|
10
|
+
env.append_path File.expand_path(File.join site.source_path, File.dirname(source_path))
|
10
11
|
env.append_path site.source_path
|
11
|
-
env.append_path File.dirname(source_path)
|
12
|
+
# env.append_path File.dirname(source_path)
|
12
13
|
[opts[:paths]].flatten.each do |path|
|
13
14
|
env.append_path(path) unless path.nil?
|
14
15
|
end
|
@@ -22,7 +22,9 @@ module Gumdrop::Support
|
|
22
22
|
stitch_opts= {} #{ root: content.source_path }
|
23
23
|
stitch_opts.merge! opts
|
24
24
|
stitch_opts[:paths] ||= []
|
25
|
-
stitch_opts
|
25
|
+
if stitch_opts.fetch(:autorootpath, true)
|
26
|
+
stitch_opts[:paths] << File.dirname(path)
|
27
|
+
end
|
26
28
|
::Stitch::Package.new(stitch_opts).compile
|
27
29
|
rescue LoadError
|
28
30
|
raise StandardError, "Stitch can't be loaded. Please add it to your Gemfile."
|
data/lib/gumdrop/util/pager.rb
CHANGED
@@ -98,7 +98,7 @@ module Gumdrop
|
|
98
98
|
status = response.code # http status code
|
99
99
|
protocol = proxy[:secure] ? 'https' : 'http'
|
100
100
|
|
101
|
-
log.
|
101
|
+
log.info "~ PROXY: #{http_method.upcase} #{status} #{url} -> #{protocol}://#{http_host}:#{http_port}#{http_path}\n"
|
102
102
|
|
103
103
|
# display and construct specific response headers
|
104
104
|
response_headers = {}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'digest/md5'
|
2
|
+
|
1
3
|
module Gumdrop
|
2
4
|
|
3
5
|
module Util
|
@@ -31,6 +33,31 @@ module Gumdrop
|
|
31
33
|
raise StandardError, "Textile is not available: Include a Textile engine in your Gemfile!"
|
32
34
|
end
|
33
35
|
end
|
36
|
+
|
37
|
+
def uri_fresh(path)
|
38
|
+
if (path[0] == '/')
|
39
|
+
internal_path= path[1..-1]
|
40
|
+
else
|
41
|
+
internal_path= path
|
42
|
+
path= "/#{path}"
|
43
|
+
end
|
44
|
+
"#{ path }?v=#{ checksum_for internal_path }"
|
45
|
+
end
|
46
|
+
|
47
|
+
def cache_bust(path)
|
48
|
+
uri_fresh(path)
|
49
|
+
end
|
50
|
+
|
51
|
+
def checksum_for(path)
|
52
|
+
path= path[1..-1] if path[0] == '/'
|
53
|
+
@_checksum_cache ||= {}
|
54
|
+
if @_checksum_cache.has_key? path
|
55
|
+
@_checksum_cache[path]
|
56
|
+
else
|
57
|
+
content= render path
|
58
|
+
@_checksum_cache[path]= Digest::MD5.hexdigest( content )
|
59
|
+
end
|
60
|
+
end
|
34
61
|
|
35
62
|
def config
|
36
63
|
site.config
|
data/lib/gumdrop/version.rb
CHANGED
data/templates/default/Gemfile
CHANGED
@@ -8,7 +8,8 @@ source "http://rubygems.org"
|
|
8
8
|
# For template support:
|
9
9
|
# gem "less"
|
10
10
|
# gem "haml"
|
11
|
-
gem "slim"
|
11
|
+
# gem "slim"
|
12
|
+
gem "erubis"
|
12
13
|
gem "sass"
|
13
14
|
gem "coffee-script"
|
14
15
|
|
@@ -17,8 +18,8 @@ gem "coffee-script"
|
|
17
18
|
#gem 'yui-compressor'
|
18
19
|
#gem 'packr'
|
19
20
|
gem 'jsmin'
|
20
|
-
gem '
|
21
|
-
#gem '
|
21
|
+
gem 'sprockets'
|
22
|
+
# gem 'stitch-rb'
|
22
23
|
|
23
24
|
# For markdown support, a couple of options:
|
24
25
|
gem "kramdown" #, :git => "git://github.com/darthapo/kramdown.git" #(github code-fence support)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gumdrop
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
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: 2013-
|
12
|
+
date: 2013-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -360,3 +360,4 @@ signing_key:
|
|
360
360
|
specification_version: 3
|
361
361
|
summary: The sweet 'n simple cms and prototyping tool.
|
362
362
|
test_files: []
|
363
|
+
has_rdoc: false
|