imagine_cms 4.1.2 → 4.1.3

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: 19660898df43518871e1d89a20319eb784f06308
4
- data.tar.gz: 53f2ea2aa6774d9987641c8ff2148032c5b6a124
3
+ metadata.gz: 7901f9485760be5cf335debb90d505feb76e66e4
4
+ data.tar.gz: ca8bbfb24c3caebc655447d98d3832e93aefb6bc
5
5
  SHA512:
6
- metadata.gz: 7bb0f4b43d50fdb5b35f31e74bfb088984aa8e938b39f68a6c5a4341b342a9b3b135969e09911d87731b7c054ba7c44c675e84c478ab8a8e5dd1732307c064bb
7
- data.tar.gz: ac7fad0d469699fe4fb4b81f6719eb11c4f846ffc6d1f3338432e075a8f26b99fe7ad3ce7d9b5c284fec84a56fcc411d70e0912d1c10d5bbf0b9d859affc1bc3
6
+ metadata.gz: 12177249b22e35b6882180a83ddbef2eda148d2fde9d04661d6bbb29b42ba49310bf9f21857fb17efd74000c49530024c90039e117fb7ee9467da5fdf2362d9c
7
+ data.tar.gz: 09b2f980f7274949f579ad5156df3d2fd6886f00f117586bffd391a874cc3346d9e6dbe2312bac2cc272a96e794706e35da99d07d64b0c8ae0b2fddfb1c367e3
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.1.5
1
+ 2.2.2
@@ -10,15 +10,55 @@ class CmsContentSweeper < ActionController::Caching::Sweeper
10
10
  end
11
11
 
12
12
  def delete_all_cached_pages
13
+ cache_dir = File.expand_path(Management::CmsController.page_cache_directory)
14
+ public_dir = File.expand_path("#{Rails.root}/public")
15
+
16
+ # this could throw Errno::ENOENT
13
17
  begin
14
- if File.expand_path(Management::CmsController.page_cache_directory) == File.expand_path("#{Rails.root}/public")
18
+ cache_dir = File.realpath cache_dir
19
+ public_dir = File.realpath public_dir
20
+ end
21
+
22
+ begin
23
+ if cache_dir == public_dir
15
24
  # expire home page
16
- expire_page :controller => 'cms/content', :action => 'show', :content_path => nil
25
+ expire_page controller: 'cms/content', action: 'show', content_path: nil
17
26
 
18
27
  # expire all other pages
19
- CmsPage.select([ :id, :path ]).find_each do |page|
20
- expire_page :controller => 'cms/content', :action => 'show', :content_path => page.path.split('/')
28
+
29
+ # original method is too slow for large sites:
30
+ # CmsPage.select([ :id, :path ]).find_each do |page|
31
+ # expire_page controller: 'cms/content', action: 'show', content_path: page.path.split('/')
32
+ # end
33
+
34
+ # quicker method: remove entire directory trees when possible
35
+ dangerous_names = [ 'assets', 'images', 'javascripts', 'media', 'stylesheets' ]
36
+ home_page = CmsPage.find_by_path('')
37
+ CmsPage.where(parent_id: home_page.id).each do |page|
38
+ if dangerous_names.include?(page.path)
39
+ # expire pages the old way
40
+ Rails.logger.info "Expire tree #{path} using safe method"
41
+ sub_page_paths(page).each do |path|
42
+ expire_page controller: 'cms/content', action: 'show', content_path: path.split('/')
43
+ end
44
+ else
45
+ # first clear this page
46
+ expire_page controller: 'cms/content', action: 'show', content_path: page.path.split('/')
47
+
48
+ # then attempt to remove entire directory tree, after sanity check
49
+ path = File.expand_path(File.join(Management::CmsController.page_cache_directory, page.path))
50
+ Dir.chdir Rails.root
51
+ Dir.glob(Pathname.new(path).relative_path_from(Pathname.new(Rails.root)).to_s, File::FNM_CASEFOLD).each do |path|
52
+ path = File.realpath(File.expand_path(path, Rails.root))
53
+ if path && File.directory?(path) # could be nil if realpath threw an Errno::ENOENT
54
+ raise "Cache directory name #{path} failed sanity check" unless path =~ /^#{public_dir}/
55
+ Rails.logger.info "Expire tree #{path} using rm -rf"
56
+ FileUtils.rm_rf(path, secure: true)
57
+ end
58
+ end
59
+ end
21
60
  end
61
+
22
62
  else
23
63
  FileUtils.rm_r(Dir.glob("#{cache_dir}/*")) rescue Errno::ENOENT
24
64
  end
@@ -27,4 +67,16 @@ class CmsContentSweeper < ActionController::Caching::Sweeper
27
67
  end
28
68
  end
29
69
 
70
+
71
+ private
72
+
73
+ def sub_page_paths(page)
74
+ paths = [ page.path ]
75
+ CmsPage.where(parent_id: page.id).each do |pg|
76
+ paths << pg.path
77
+ paths.concat sub_page_paths(pg)
78
+ end
79
+ paths
80
+ end
81
+
30
82
  end
data/imagine_cms.gemspec CHANGED
@@ -33,7 +33,7 @@ Gem::Specification.new do |s|
33
33
  s.add_dependency "actionpack-page_caching", "~> 1.0"
34
34
  s.add_dependency "non-stupid-digest-assets", "~> 1.0"
35
35
  s.add_dependency "prototype-rails", "~> 4.0.0"
36
- s.add_dependency "aws-sdk", "~> 2.0.0.pre"
36
+ s.add_dependency "aws-sdk", "~> 2.0.0"
37
37
  s.add_dependency "rmagick", [ ">= 1.15.0", "< 3.0" ]
38
38
  s.add_dependency "mini_magick", "~> 3.3"
39
39
  s.add_dependency "rubyzip", "~> 1.0"
@@ -244,4 +244,25 @@ module ActionControllerExtensions
244
244
  end
245
245
 
246
246
  end
247
+
248
+ end
249
+
250
+ module ActionControllerCachingExtensions
251
+
252
+ module ClassMethods
253
+
254
+ def expire_page(path)
255
+ return unless perform_caching
256
+
257
+ path = Pathname.new(page_cache_path(path)).relative_path_from(Pathname.new(Rails.root))
258
+ Dir.chdir Rails.root
259
+
260
+ instrument_page_cache :expire_page, path do
261
+ Dir.glob(path, File::FNM_CASEFOLD).each { |f| File.delete(f) }
262
+ Dir.glob(path + '.gz', File::FNM_CASEFOLD).each { |f| File.delete(f) }
263
+ end
264
+ end
265
+
266
+ end
267
+
247
268
  end
@@ -13,7 +13,10 @@ module ImagineCms
13
13
 
14
14
  initializer 'imagine_cms.load_helpers' do |app|
15
15
  ActionController::Base.send :include, CmsApplicationHelper
16
- # ActionView::Base.send :include, CmsApplicationHelper
16
+ end
17
+
18
+ initializer 'imagine_cms.caching_extensions' do |app|
19
+ ActionController::Base.send :extend, ActionControllerCachingExtensions::ClassMethods
17
20
  end
18
21
 
19
22
  def self.activate
@@ -1,3 +1,3 @@
1
1
  module ImagineCms
2
- VERSION = "4.1.2"
2
+ VERSION = "4.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: imagine_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.2
4
+ version: 4.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Namba
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-20 00:00:00.000000000 Z
11
+ date: 2015-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -106,14 +106,14 @@ dependencies:
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 2.0.0.pre
109
+ version: 2.0.0
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: 2.0.0.pre
116
+ version: 2.0.0
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: rmagick
119
119
  requirement: !ruby/object:Gem::Requirement
@@ -612,7 +612,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
612
612
  version: 1.8.11
613
613
  requirements: []
614
614
  rubyforge_project: imagine_cms
615
- rubygems_version: 2.4.5
615
+ rubygems_version: 2.4.6
616
616
  signing_key:
617
617
  specification_version: 4
618
618
  summary: Imagine Content Management System for Rails