sitepress-core 0.1.23 → 0.1.24

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f174159f7ac7c4a5da4ae85ddb935ddd8c00c86
4
- data.tar.gz: c5fac5c7e577168b0b7f9cdda661b490bc4dcb13
3
+ metadata.gz: 8de27ae96f7b22a1365f8ee3db46834b2a690c6e
4
+ data.tar.gz: 3cd8b05e8d6198cf5672d9a05eb7ca3a766af3b2
5
5
  SHA512:
6
- metadata.gz: dbf642bcb9c5da800cf250fca3d188c6341ef708527c6a6fe420d13ab279a34f2ce13901b22b103c60e663c60021eea37eee8c4f0d5143201a998a679ca40014
7
- data.tar.gz: 6414e98c58001aa550148cf9d119fc02a4ae746773d9802a73505a17caf18b073b2f57b25a70bb2658ef1453f11b29179ac998e5ad9121abd59441794e7b1cea
6
+ metadata.gz: 50ebdd80f22f4b4efdb67f2adeb977cfbcf0bc9e604f218cf30afacd55255e7512d18b90a966f485829234154cd75bb378b0ad92de8eca3165adcb45a4ad66f8
7
+ data.tar.gz: 94f3fcc3de1d3f7595de7bb2993aea11d0a1d1955aa9f0ae89995a144701d142d696e06210120ecad0214217bdba4dd55eee91beb6967d39f0af1592791d492b
@@ -16,4 +16,7 @@ module Sitepress
16
16
  autoload :ResourcesPipeline, "sitepress/resources_pipeline"
17
17
  autoload :ResourcesNode, "sitepress/resources_node"
18
18
  autoload :Site, "sitepress/site"
19
+ module Middleware
20
+ autoload :RequestCache, "sitepress/middleware/request_cache"
21
+ end
19
22
  end
@@ -0,0 +1,26 @@
1
+ module Sitepress
2
+ module Middleware
3
+ # Reloads the Sitepress cache between requests if cache resources is enabled.
4
+ # This ensures that the Sitepress resources are loaded only once per request
5
+ # for development environments so that the site isn're reloaded per call. Used
6
+ # from the Rails app and from the stand-alone Sitepress server.
7
+ class RequestCache
8
+ def initialize(app, site:)
9
+ @app, @site = app, site
10
+ end
11
+
12
+ # Cache resources for the duration of the request, even if
13
+ # caching is disabled.
14
+ def call(env)
15
+ cache_resources = @site.cache_resources
16
+ begin
17
+ @site.cache_resources = true
18
+ @app.call env
19
+ ensure
20
+ @site.cache_resources = cache_resources
21
+ @site.clear_resources_cache unless @site.cache_resources
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -24,6 +24,9 @@ module Sitepress
24
24
 
25
25
  def initialize(root_path: DEFAULT_ROOT_PATH)
26
26
  self.root_path = root_path
27
+ # When Site#resources is called, the results should be cached in production
28
+ # environments for performance reasons, but not in development environments.
29
+ self.cache_resources = false
27
30
  end
28
31
 
29
32
  # A tree representation of the resourecs wthin the site. The root is a node that's
@@ -37,8 +40,13 @@ module Sitepress
37
40
 
38
41
  # Returns a list of all the resources within #root.
39
42
  def resources
40
- @_resources = nil unless cache_resources
41
- @_resources ||= ResourceCollection.new(node: root, root_path: root_path)
43
+ with_resources_cache do
44
+ ResourceCollection.new(node: root, root_path: root_path)
45
+ end
46
+ end
47
+
48
+ def clear_resources_cache
49
+ @_resources = nil
42
50
  end
43
51
 
44
52
  # Root path to website project. Contains helpers, pages, and more.
@@ -51,6 +59,10 @@ module Sitepress
51
59
  root_path.join("pages")
52
60
  end
53
61
 
62
+ def helpers_path
63
+ root_path.join("helpers")
64
+ end
65
+
54
66
  # Quick and dirty way to manipulate resources in the site without
55
67
  # creating classes that implement the #process_resources method.
56
68
  #
@@ -91,6 +103,11 @@ module Sitepress
91
103
  end
92
104
 
93
105
  private
106
+ def with_resources_cache
107
+ clear_resources_cache unless cache_resources
108
+ @_resources ||= yield
109
+ end
110
+
94
111
  # Lazy stream of files that will be rendered by resources.
95
112
  def pages_assets(glob = DEFAULT_GLOB)
96
113
  Dir.glob(pages_path.join(glob)).select(&File.method(:file?)).lazy.map do |path|
@@ -1,3 +1,3 @@
1
1
  module Sitepress
2
- VERSION = "0.1.23".freeze
2
+ VERSION = "0.1.24".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sitepress-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.23
4
+ version: 0.1.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-11-04 00:00:00.000000000 Z
11
+ date: 2016-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,7 @@ files:
80
80
  - lib/sitepress/extensions/proc_manipulator.rb
81
81
  - lib/sitepress/formats.rb
82
82
  - lib/sitepress/frontmatter.rb
83
+ - lib/sitepress/middleware/request_cache.rb
83
84
  - lib/sitepress/resource.rb
84
85
  - lib/sitepress/resource_collection.rb
85
86
  - lib/sitepress/resources_node.rb