publify_core 9.0.0.pre2 → 9.0.0.pre3

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of publify_core might be problematic. Click here for more details.

Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/admin/content_controller.rb +0 -2
  3. data/app/controllers/admin/feedback_controller.rb +1 -14
  4. data/app/controllers/admin/migrations_controller.rb +0 -1
  5. data/app/controllers/admin/notes_controller.rb +0 -1
  6. data/app/controllers/admin/pages_controller.rb +0 -1
  7. data/app/controllers/admin/post_types_controller.rb +0 -1
  8. data/app/controllers/admin/resources_controller.rb +0 -2
  9. data/app/controllers/admin/seo_controller.rb +0 -1
  10. data/app/controllers/admin/settings_controller.rb +0 -2
  11. data/app/controllers/admin/sidebar_controller.rb +0 -1
  12. data/app/controllers/admin/tags_controller.rb +0 -1
  13. data/app/controllers/admin/textfilters_controller.rb +1 -1
  14. data/app/controllers/admin/themes_controller.rb +0 -9
  15. data/app/controllers/admin/users_controller.rb +0 -1
  16. data/app/controllers/articles_controller.rb +1 -4
  17. data/app/controllers/comments_controller.rb +4 -5
  18. data/app/controllers/feedback_controller.rb +1 -3
  19. data/app/controllers/notes_controller.rb +0 -2
  20. data/app/controllers/tags_controller.rb +0 -5
  21. data/app/controllers/text_controller.rb +2 -2
  22. data/app/controllers/theme_controller.rb +3 -3
  23. data/app/controllers/trackbacks_controller.rb +1 -1
  24. data/app/controllers/xml_controller.rb +3 -7
  25. data/app/models/article/states.rb +2 -0
  26. data/app/models/blog.rb +31 -29
  27. data/app/models/trigger.rb +1 -1
  28. data/app/views/admin/shared/_menu.html.erb +0 -1
  29. data/app/views/notes/show_in_reply.html.erb +3 -1
  30. data/config/routes.rb +0 -3
  31. data/lib/publify_core/version.rb +1 -1
  32. data/lib/publify_core.rb +0 -6
  33. data/lib/text_filter_plugin.rb +1 -1
  34. metadata +26 -44
  35. data/app/controllers/admin/cache_controller.rb +0 -33
  36. data/app/models/blog_sweeper.rb +0 -86
  37. data/app/models/page_cache.rb +0 -33
  38. data/app/views/admin/cache/show.html.erb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 192a92224fc3fef20534361ea13e13747264009f
4
- data.tar.gz: 59b1e0ce9701b047697307dd5355acb30fe8053f
3
+ metadata.gz: 65754688dac47ff1c265e861e7d71e8ee11795b3
4
+ data.tar.gz: 11d916318fe03f35ba726dd7c713d4ed78c51f7a
5
5
  SHA512:
6
- metadata.gz: bc476adc0afa5b919e7d69bcc242c1849de2b1107b7c3e8bebbfbb8f3ce3ce78cf5cd205de6632a4f927fd8ba6a473997884885dbf07ad6b6e9f40d3a1a8879a
7
- data.tar.gz: 15090b596a772ca259023ac4fadeaf35db976b4411e74c4fc0583f7aea7679e86a12a99193f6ce20a851fe22524cc4f58c30d83d3b6bb42c77da026307b92e18
6
+ metadata.gz: cb60a7fdf3aba54771e6ade6ea56b24d82420396e6ffbdafb07262474b3a96a275d8b3d136b5098c6c3270176d4ce9f3808f2be95746691eb59a4d3474e6147f
7
+ data.tar.gz: ef03364bf180833752b6607d253a9b077dd897d1298ffe06d896d7e41584ba157183a5f83511259ce3ea10899bc69ead6dfbcc3ad1bbd06ac220ee5cf6335fdb
@@ -5,8 +5,6 @@ module Admin; end
5
5
  class Admin::ContentController < Admin::BaseController
6
6
  layout :get_layout
7
7
 
8
- cache_sweeper :blog_sweeper
9
-
10
8
  def index
11
9
  @search = params[:search] ? params[:search] : {}
12
10
  @articles = this_blog.articles.search_with(@search).page(params[:page]).per(this_blog.admin_display_elements)
@@ -1,5 +1,4 @@
1
1
  class Admin::FeedbackController < Admin::BaseController
2
- cache_sweeper :blog_sweeper
3
2
  ONLY_DOMAIN = %w(unapproved presumed_ham presumed_spam ham spam).freeze
4
3
 
5
4
  def index
@@ -108,11 +107,6 @@ class Admin::FeedbackController < Admin::BaseController
108
107
  count += Feedback.delete(id)
109
108
  end
110
109
  flash[:success] = I18n.t('admin.feedback.bulkops.success_deleted', count: count)
111
-
112
- if items.any(&:invalidates_cache?)
113
- flush_cache
114
- return
115
- end
116
110
  when 'Mark Checked Items as Ham'
117
111
  update_feedback(items, :mark_as_ham!)
118
112
  flash[:success] = I18n.t('admin.feedback.bulkops.success_mark_as_ham', count: ids.size)
@@ -124,7 +118,7 @@ class Admin::FeedbackController < Admin::BaseController
124
118
  flash[:success] = I18n.t('admin.feedback.bulkops.success_classification', count: ids.size)
125
119
  when 'Delete all spam'
126
120
  if request.post?
127
- Feedback.delete_all(['state = ?', 'spam'])
121
+ Feedback.where('state = ?', 'spam').delete_all
128
122
  flash[:success] = I18n.t('admin.feedback.bulkops.success_deleted_spam')
129
123
  end
130
124
  else
@@ -147,13 +141,6 @@ class Admin::FeedbackController < Admin::BaseController
147
141
  def update_feedback(items, method)
148
142
  items.each do |value|
149
143
  value.send(method)
150
- @unexpired && value.invalidates_cache? or next
151
- flush_cache
152
144
  end
153
145
  end
154
-
155
- def flush_cache
156
- @unexpired = false
157
- PageCache.sweep_all
158
- end
159
146
  end
@@ -1,5 +1,4 @@
1
1
  class Admin::MigrationsController < Admin::BaseController
2
- cache_sweeper :blog_sweeper
3
2
  skip_before_action :look_for_needed_db_updates
4
3
 
5
4
  def show
@@ -1,6 +1,5 @@
1
1
  class Admin::NotesController < Admin::BaseController
2
2
  layout 'administration'
3
- cache_sweeper :blog_sweeper
4
3
 
5
4
  before_action :load_existing_notes, only: [:index, :edit]
6
5
  before_action :find_note, only: [:edit, :update, :show, :destroy]
@@ -7,7 +7,6 @@ class Admin::PagesController < Admin::BaseController
7
7
  before_action :set_page, only: [:show, :edit, :update, :destroy]
8
8
 
9
9
  layout :get_layout
10
- cache_sweeper :blog_sweeper
11
10
 
12
11
  def index
13
12
  @search = params[:search] ? params[:search] : {}
@@ -1,6 +1,5 @@
1
1
  class Admin::PostTypesController < Admin::BaseController
2
2
  before_action :set_post_type, only: [:edit, :update, :destroy]
3
- cache_sweeper :blog_sweeper
4
3
 
5
4
  def index
6
5
  @post_types = PostType.all
@@ -1,6 +1,4 @@
1
1
  class Admin::ResourcesController < Admin::BaseController
2
- cache_sweeper :blog_sweeper
3
-
4
2
  def upload
5
3
  file = params[:upload]
6
4
 
@@ -1,5 +1,4 @@
1
1
  class Admin::SeoController < Admin::BaseController
2
- cache_sweeper :blog_sweeper
3
2
  before_action :set_setting
4
3
  before_action :set_section
5
4
 
@@ -1,6 +1,4 @@
1
1
  class Admin::SettingsController < Admin::BaseController
2
- cache_sweeper :blog_sweeper
3
-
4
2
  def index
5
3
  this_blog.base_url = blog_base_url if this_blog.base_url.blank?
6
4
  load_settings
@@ -29,7 +29,6 @@ class Admin::SidebarController < Admin::BaseController
29
29
 
30
30
  def publish
31
31
  Sidebar.apply_staging_on_active!
32
- PageCache.sweep_all
33
32
  redirect_to admin_sidebar_index_path
34
33
  end
35
34
 
@@ -1,7 +1,6 @@
1
1
  class Admin::TagsController < Admin::BaseController
2
2
  before_action :fetch_tags, only: [:index, :edit]
3
3
  before_action :set_tag, only: [:edit, :update, :destroy]
4
- cache_sweeper :blog_sweeper
5
4
 
6
5
  def index
7
6
  @tag = Tag.new
@@ -1,6 +1,6 @@
1
1
  class Admin::TextfiltersController < Admin::BaseController
2
2
  def macro_help
3
3
  @macro = TextFilterPlugin.available_filters.find { |filter| filter.short_name == params[:id] }
4
- render text: BlueCloth.new(@macro.help_text).to_html
4
+ render html: BlueCloth.new(@macro.help_text).to_html
5
5
  end
6
6
  end
@@ -3,8 +3,6 @@ require 'time'
3
3
  require 'rexml/document'
4
4
 
5
5
  class Admin::ThemesController < Admin::BaseController
6
- cache_sweeper :blog_sweeper
7
-
8
6
  def index
9
7
  @themes = Theme.find_all
10
8
  @themes.each do |theme|
@@ -23,15 +21,8 @@ class Admin::ThemesController < Admin::BaseController
23
21
  def switchto
24
22
  this_blog.theme = params[:theme]
25
23
  this_blog.save
26
- zap_theme_caches
27
24
  this_blog.current_theme(:reload)
28
25
  flash[:success] = I18n.t('admin.themes.switchto.success')
29
26
  redirect_to admin_themes_url
30
27
  end
31
-
32
- protected
33
-
34
- def zap_theme_caches
35
- FileUtils.rm_rf(%w(stylesheets javascript images).map { |v| page_cache_directory + "/#{v}/theme" })
36
- end
37
28
  end
@@ -1,6 +1,5 @@
1
1
  class Admin::UsersController < Admin::BaseController
2
2
  before_action :set_user, only: [:edit, :update, :destroy]
3
- cache_sweeper :blog_sweeper
4
3
 
5
4
  def index
6
5
  @users = User.order('login asc').page(params[:page]).per(this_blog.admin_display_elements)
@@ -5,9 +5,6 @@ class ArticlesController < ContentController
5
5
 
6
6
  layout :theme_layout, except: [:trackback]
7
7
 
8
- cache_sweeper :blog_sweeper
9
- caches_page :index, :archives, :read, :view_page, :redirect, if: proc { |c| c.request.query_string == '' }
10
-
11
8
  helper :'admin/base'
12
9
 
13
10
  def index
@@ -129,7 +126,7 @@ class ArticlesController < ContentController
129
126
 
130
127
  # TODO: Move to TextfilterController?
131
128
  def markup_help
132
- render text: TextFilter.find(params[:id]).commenthelp
129
+ render html: TextFilter.find(params[:id]).commenthelp
133
130
  end
134
131
 
135
132
  private
@@ -2,9 +2,8 @@ class CommentsController < FeedbackController
2
2
  before_action :get_article, only: [:create, :preview]
3
3
 
4
4
  def create
5
- @comment = @article.with_options(new_comment_defaults) do |art|
6
- art.add_comment(params[:comment].slice(:body, :author, :email, :url))
7
- end
5
+ options = new_comment_defaults.merge comment_params.to_h
6
+ @comment = @article.add_comment(options)
8
7
 
9
8
  unless current_user.nil? || session[:user_id].nil?
10
9
  # maybe useless, but who knows ?
@@ -24,10 +23,10 @@ class CommentsController < FeedbackController
24
23
  end
25
24
 
26
25
  def preview
27
- return render text: 'Comments are closed' if @article.comments_closed?
26
+ return render plain: 'Comments are closed' if @article.comments_closed?
28
27
 
29
28
  if comment_params[:body].blank?
30
- render nothing: true
29
+ head :ok
31
30
  return
32
31
  end
33
32
 
@@ -1,8 +1,6 @@
1
1
  class FeedbackController < BaseController
2
2
  before_action :get_article, only: [:create]
3
3
 
4
- cache_sweeper :blog_sweeper
5
-
6
4
  # Used only by comments. Maybe need move to comments controller
7
5
  # or use it in our code with send some feed about trackback
8
6
  #
@@ -28,7 +26,7 @@ class FeedbackController < BaseController
28
26
  article = Article.find(params[:article_id])
29
27
  redirect_to "#{URI.parse(article.permalink_url).path}\##{@page_title.underscore}"
30
28
  else
31
- render text: 'this space left blank'
29
+ render plain: 'this space left blank'
32
30
  end
33
31
  end
34
32
  feedbacks = Feedback.from(controller_name, params[:article_id]).limit(this_blog.per_page(params[:format]))
@@ -2,8 +2,6 @@ class NotesController < ContentController
2
2
  require 'json'
3
3
 
4
4
  layout :theme_layout
5
- cache_sweeper :blog_sweeper
6
- caches_page :index, :show, if: proc { |c| c.request.query_string == '' }
7
5
 
8
6
  after_action :set_blog_infos
9
7
 
@@ -1,11 +1,6 @@
1
1
  class TagsController < ContentController
2
2
  before_action :auto_discovery_feed, only: [:show, :index]
3
3
  layout :theme_layout
4
- cache_sweeper :blog_sweeper
5
-
6
- caches_page :index, :show, if: proc { |c|
7
- c.request.query_string == ''
8
- }
9
4
 
10
5
  def index
11
6
  @tags = Tag.page(params[:page]).per(100)
@@ -1,9 +1,9 @@
1
1
  class TextController < BaseController
2
2
  def humans
3
- render text: this_blog.humans
3
+ render plain: this_blog.humans
4
4
  end
5
5
 
6
6
  def robots
7
- render text: this_blog.robots
7
+ render plain: this_blog.robots
8
8
  end
9
9
  end
@@ -16,7 +16,7 @@ class ThemeController < ContentController
16
16
  end
17
17
 
18
18
  def error
19
- render nothing: true, status: 404
19
+ head :not_found
20
20
  end
21
21
 
22
22
  def static_view_test
@@ -27,11 +27,11 @@ class ThemeController < ContentController
27
27
  def render_theme_item(type, file, mime = nil)
28
28
  mime ||= mime_for(file)
29
29
  if file.split(%r{[\\/]}).include?('..')
30
- return (render 'errors/404', status: 404)
30
+ return (render 'errors/404', status: 404, formats: ['html'])
31
31
  end
32
32
 
33
33
  src = this_blog.current_theme.path + "/#{type}/#{file}"
34
- return (render text: 'Not Found', status: 404) unless File.exist? src
34
+ return (render plain: 'Not Found', status: 404) unless File.exist? src
35
35
 
36
36
  cache_page File.read(src) if perform_caching
37
37
 
@@ -18,7 +18,7 @@ class TrackbacksController < FeedbackController
18
18
 
19
19
  respond_to do |format|
20
20
  format.xml { render 'trackback', formats: [:xml], handlers: [:builder] }
21
- format.html { render nothing: true }
21
+ format.html { head :ok }
22
22
  end
23
23
  end
24
24
 
@@ -1,8 +1,4 @@
1
1
  class XmlController < BaseController
2
- caches_page :feed, if: proc { |c|
3
- c.request.query_string == ''
4
- }
5
-
6
2
  NORMALIZED_FORMAT_FOR = { 'atom' => 'atom', 'rss' => 'rss',
7
3
  'atom10' => 'atom', 'atom03' => 'atom', 'rss20' => 'rss',
8
4
  'googlesitemap' => 'googlesitemap', 'rsd' => 'rsd' }.freeze
@@ -13,7 +9,7 @@ class XmlController < BaseController
13
9
  @format = 'rss'
14
10
  if params[:format]
15
11
  @format = NORMALIZED_FORMAT_FOR[params[:format]]
16
- return render(text: 'Unsupported format', status: 404) unless @format
12
+ return render(plain: 'Unsupported format', status: 404) unless @format
17
13
  end
18
14
 
19
15
  # TODO: Move redirects into config/routes.rb, if possible
@@ -37,7 +33,7 @@ class XmlController < BaseController
37
33
 
38
34
  @feed_title = this_blog.blog_name
39
35
  @link = this_blog.base_url
40
- @self_url = url_for(params)
36
+ @self_url = request.url
41
37
 
42
38
  @items += Article.find_already_published(1000)
43
39
  @items += Page.find_already_published(1000)
@@ -47,7 +43,7 @@ class XmlController < BaseController
47
43
  format.googlesitemap
48
44
  end
49
45
  else
50
- return render(text: 'Unsupported feed type', status: 404)
46
+ return render(plain: 'Unsupported feed type', status: 404)
51
47
  end
52
48
  end
53
49
 
@@ -108,6 +108,7 @@ module Article::States
108
108
 
109
109
  class Withdrawn < Base
110
110
  def enter_hook
111
+ super
111
112
  content[:published] = false
112
113
  end
113
114
 
@@ -126,6 +127,7 @@ module Article::States
126
127
 
127
128
  class PublicationPending < Base
128
129
  def enter_hook
130
+ super
129
131
  content[:published] = false if content.new_record?
130
132
  end
131
133
 
data/app/models/blog.rb CHANGED
@@ -170,39 +170,41 @@ EOS
170
170
  @current_theme ||= Theme.find(theme) || Theme.new('', '')
171
171
  end
172
172
 
173
- # Generate a URL based on the +base_url+. This allows us to generate URLs
174
- # without needing a controller handy, so we can produce URLs from within models
175
- # where appropriate.
176
- #
177
- # It also caches the result in the Rails cache, so repeated URL generation
178
- # requests should be fast, as they bypass all of Rails' route logic.
179
- def url_for_with_base_url(options = {}, extra_params = {})
180
- case options
181
- when String
182
- url_generated = if extra_params[:only_path]
183
- root_path
184
- else
185
- base_url
186
- end
187
- url_generated += "/#{options}" # They asked for 'url_for "/some/path"', so return it unedited.
188
- url_generated += "##{extra_params[:anchor]}" if extra_params[:anchor]
189
- url_generated
190
- when Hash
191
- merged_opts = options.reverse_merge!(only_path: false, controller: '',
192
- action: 'permalink',
193
- host: host_with_port,
194
- script_name: root_path)
195
- cache_key = merged_opts.values.prepend('blog-urlfor-withbaseurl').join('-')
196
- unless Rails.cache.exist?(cache_key)
197
- Rails.cache.write(cache_key, url_for_without_base_url(merged_opts))
173
+ module BasedUrlFor
174
+ # Generate a URL based on the +base_url+. This allows us to generate URLs
175
+ # without needing a controller handy, so we can produce URLs from within models
176
+ # where appropriate.
177
+ #
178
+ # It also caches the result in the Rails cache, so repeated URL generation
179
+ # requests should be fast, as they bypass all of Rails' route logic.
180
+ def url_for(options = {}, extra_params = {})
181
+ case options
182
+ when String
183
+ url_generated = if extra_params[:only_path]
184
+ root_path
185
+ else
186
+ base_url
187
+ end
188
+ url_generated += "/#{options}" # They asked for 'url_for "/some/path"', so return it unedited.
189
+ url_generated += "##{extra_params[:anchor]}" if extra_params[:anchor]
190
+ url_generated
191
+ when Hash
192
+ merged_opts = options.reverse_merge!(only_path: false, controller: '',
193
+ action: 'permalink',
194
+ host: host_with_port,
195
+ script_name: root_path)
196
+ cache_key = merged_opts.values.prepend('blog-urlfor-withbaseurl').join('-')
197
+ unless Rails.cache.exist?(cache_key)
198
+ Rails.cache.write(cache_key, super(merged_opts))
199
+ end
200
+ Rails.cache.read(cache_key)
201
+ else
202
+ raise "Invalid URL in url_for: #{options.inspect}"
198
203
  end
199
- Rails.cache.read(cache_key)
200
- else
201
- raise "Invalid URL in url_for: #{options.inspect}"
202
204
  end
203
205
  end
204
206
 
205
- alias_method_chain :url_for, :base_url
207
+ prepend BasedUrlFor
206
208
 
207
209
  # The URL for a static file.
208
210
  # FIXME: Let carrierwave handle this by itself
@@ -9,7 +9,7 @@ class Trigger < ActiveRecord::Base
9
9
  end
10
10
 
11
11
  def fire
12
- destroy_all ['due_at <= ?', Time.now]
12
+ where('due_at <= ?', Time.now).destroy_all
13
13
  true
14
14
  rescue
15
15
  migrator = Migrator.new
@@ -67,7 +67,6 @@
67
67
  <%= menu_item(t('.write'), write_admin_settings_path) %>
68
68
  <%= menu_item(t('.display'), display_admin_settings_path) %>
69
69
  <%= menu_item(t('.feedback'), feedback_admin_settings_path) %>
70
- <%= menu_item(t('.cache'), admin_cache_path) %>
71
70
  <%= menu_item(t('.manage_users'), admin_users_path) %>
72
71
  </ul>
73
72
  </li>
@@ -1,7 +1,9 @@
1
1
  <div class="hfeed">
2
2
  <div class='h-entry hentry h-as-note'>
3
3
  <article class=' well well-small'>
4
- <%= image_tag(@reply['user']['profile_image_url'] , class: "alignleft", alt: @reply['user']['name']) %>
4
+ <% if @reply['user']['profile_image_url'] %>
5
+ <%= image_tag(@reply['user']['profile_image_url'], class: "alignleft", alt: @reply['user']['name']) %>
6
+ <% end %>
5
7
  <strong><%= get_reply_context_url(@reply) %></strong>
6
8
  <p><%= nofollowify_links(PublifyApp::Textfilter::Twitterfilter.filtertext(@reply['text'])) %></p>
7
9
  <p>
data/config/routes.rb CHANGED
@@ -95,9 +95,6 @@ Rails.application.routes.draw do
95
95
  namespace :admin do
96
96
  root 'dashboard#index', as: 'dashboard'
97
97
 
98
- get 'cache', to: 'cache#show', format: false
99
- delete 'cache', to: 'cache#destroy', format: false
100
-
101
98
  resources :content, only: [:index, :new, :edit, :create, :update, :destroy], format: false do
102
99
  collection do
103
100
  get 'auto_complete_for_article_keywords'
@@ -1,3 +1,3 @@
1
1
  module PublifyCore
2
- VERSION = '9.0.0.pre2'
2
+ VERSION = '9.0.0.pre3'
3
3
  end
data/lib/publify_core.rb CHANGED
@@ -5,7 +5,6 @@ require 'publify_core/version'
5
5
  require 'publify_core/engine'
6
6
  require 'publify_core/lang'
7
7
 
8
- require 'actionpack/page_caching'
9
8
  require 'activerecord/session_store'
10
9
  require 'bootstrap-sass'
11
10
  require 'carrierwave'
@@ -13,11 +12,6 @@ require 'dynamic_form'
13
12
  require 'jquery-rails'
14
13
  require 'jquery-ui-rails'
15
14
  require 'kaminari'
16
- # Ensure Rails Observers defines ActiveRecord::Observer before loading
17
- # sweeping.rb. Otherwise, Sweeper won't be defined.
18
- # TODO: Replace or update rails-observers
19
- require 'rails/observers/activerecord/active_record'
20
- require 'rails-observers'
21
15
  require 'rails_autolink'
22
16
  require 'rails-timeago'
23
17
  require 'recaptcha/rails'
@@ -78,7 +78,7 @@ class TextFilterPlugin
78
78
  end
79
79
 
80
80
  def self.sanitize(*args)
81
- (@sanitizer ||= HTML::WhiteListSanitizer.new).sanitize(*args)
81
+ (@sanitizer ||= Rails::Html::WhiteListSanitizer.new).sanitize(*args)
82
82
  end
83
83
 
84
84
  def self.default_helper_module!
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: publify_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.0.0.pre2
4
+ version: 9.0.0.pre3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matijs van Zuijlen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-11-18 00:00:00.000000000 Z
14
+ date: 2016-11-26 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -19,14 +19,14 @@ dependencies:
19
19
  requirements:
20
20
  - - "~>"
21
21
  - !ruby/object:Gem::Version
22
- version: 4.2.6
22
+ version: 5.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 4.2.6
29
+ version: 5.0.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: RedCloth
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -41,20 +41,6 @@ dependencies:
41
41
  - - "~>"
42
42
  - !ruby/object:Gem::Version
43
43
  version: 4.3.1
44
- - !ruby/object:Gem::Dependency
45
- name: actionpack-page_caching
46
- requirement: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - "~>"
49
- - !ruby/object:Gem::Version
50
- version: 1.0.2
51
- type: :runtime
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: 1.0.2
58
44
  - !ruby/object:Gem::Dependency
59
45
  name: activerecord-session_store
60
46
  requirement: !ruby/object:Gem::Requirement
@@ -201,28 +187,28 @@ dependencies:
201
187
  requirements:
202
188
  - - "~>"
203
189
  - !ruby/object:Gem::Version
204
- version: 0.9.2
190
+ version: 0.12.0
205
191
  type: :runtime
206
192
  prerelease: false
207
193
  version_requirements: !ruby/object:Gem::Requirement
208
194
  requirements:
209
195
  - - "~>"
210
196
  - !ruby/object:Gem::Version
211
- version: 0.9.2
197
+ version: 0.12.0
212
198
  - !ruby/object:Gem::Dependency
213
199
  name: jquery-rails
214
200
  requirement: !ruby/object:Gem::Requirement
215
201
  requirements:
216
202
  - - "~>"
217
203
  - !ruby/object:Gem::Version
218
- version: 4.1.0
204
+ version: 4.2.1
219
205
  type: :runtime
220
206
  prerelease: false
221
207
  version_requirements: !ruby/object:Gem::Requirement
222
208
  requirements:
223
209
  - - "~>"
224
210
  - !ruby/object:Gem::Version
225
- version: 4.1.0
211
+ version: 4.2.1
226
212
  - !ruby/object:Gem::Dependency
227
213
  name: jquery-ui-rails
228
214
  requirement: !ruby/object:Gem::Requirement
@@ -265,20 +251,6 @@ dependencies:
265
251
  - - "~>"
266
252
  - !ruby/object:Gem::Version
267
253
  version: '4.2'
268
- - !ruby/object:Gem::Dependency
269
- name: rails-observers
270
- requirement: !ruby/object:Gem::Requirement
271
- requirements:
272
- - - "~>"
273
- - !ruby/object:Gem::Version
274
- version: 0.1.2
275
- type: :runtime
276
- prerelease: false
277
- version_requirements: !ruby/object:Gem::Requirement
278
- requirements:
279
- - - "~>"
280
- - !ruby/object:Gem::Version
281
- version: 0.1.2
282
254
  - !ruby/object:Gem::Dependency
283
255
  name: rails-timeago
284
256
  requirement: !ruby/object:Gem::Requirement
@@ -313,28 +285,28 @@ dependencies:
313
285
  requirements:
314
286
  - - "~>"
315
287
  - !ruby/object:Gem::Version
316
- version: '3.2'
288
+ version: 4.0.0
317
289
  type: :runtime
318
290
  prerelease: false
319
291
  version_requirements: !ruby/object:Gem::Requirement
320
292
  requirements:
321
293
  - - "~>"
322
294
  - !ruby/object:Gem::Version
323
- version: '3.2'
295
+ version: 4.0.0
324
296
  - !ruby/object:Gem::Dependency
325
297
  name: rubypants
326
298
  requirement: !ruby/object:Gem::Requirement
327
299
  requirements:
328
300
  - - "~>"
329
301
  - !ruby/object:Gem::Version
330
- version: 0.2.0
302
+ version: 0.6.0
331
303
  type: :runtime
332
304
  prerelease: false
333
305
  version_requirements: !ruby/object:Gem::Requirement
334
306
  requirements:
335
307
  - - "~>"
336
308
  - !ruby/object:Gem::Version
337
- version: 0.2.0
309
+ version: 0.6.0
338
310
  - !ruby/object:Gem::Dependency
339
311
  name: sass-rails
340
312
  requirement: !ruby/object:Gem::Requirement
@@ -461,6 +433,20 @@ dependencies:
461
433
  - - "~>"
462
434
  - !ruby/object:Gem::Version
463
435
  version: 0.9.1
436
+ - !ruby/object:Gem::Dependency
437
+ name: rails-controller-testing
438
+ requirement: !ruby/object:Gem::Requirement
439
+ requirements:
440
+ - - "~>"
441
+ - !ruby/object:Gem::Version
442
+ version: 1.0.1
443
+ type: :development
444
+ prerelease: false
445
+ version_requirements: !ruby/object:Gem::Requirement
446
+ requirements:
447
+ - - "~>"
448
+ - !ruby/object:Gem::Version
449
+ version: 1.0.1
464
450
  description: Core engine for the Publify blogging system, formerly known as Typo.
465
451
  email:
466
452
  - matijs@matijs.net
@@ -521,7 +507,6 @@ files:
521
507
  - app/assets/stylesheets/widearea.css
522
508
  - app/controllers/accounts_controller.rb
523
509
  - app/controllers/admin/base_controller.rb
524
- - app/controllers/admin/cache_controller.rb
525
510
  - app/controllers/admin/content_controller.rb
526
511
  - app/controllers/admin/dashboard_controller.rb
527
512
  - app/controllers/admin/feedback_controller.rb
@@ -567,7 +552,6 @@ files:
567
552
  - app/models/article/factory.rb
568
553
  - app/models/article/states.rb
569
554
  - app/models/blog.rb
570
- - app/models/blog_sweeper.rb
571
555
  - app/models/comment.rb
572
556
  - app/models/config_manager.rb
573
557
  - app/models/content.rb
@@ -577,7 +561,6 @@ files:
577
561
  - app/models/meta_sidebar.rb
578
562
  - app/models/note.rb
579
563
  - app/models/page.rb
580
- - app/models/page_cache.rb
581
564
  - app/models/page_sidebar.rb
582
565
  - app/models/ping.rb
583
566
  - app/models/post_type.rb
@@ -597,7 +580,6 @@ files:
597
580
  - app/services/title_builder.rb
598
581
  - app/uploaders/resource_uploader.rb
599
582
  - app/views/accounts/confirm.html.erb
600
- - app/views/admin/cache/show.html.erb
601
583
  - app/views/admin/content/_article_list.html.erb
602
584
  - app/views/admin/content/_form.html.erb
603
585
  - app/views/admin/content/autosave.js.erb
@@ -1,33 +0,0 @@
1
- require 'find'
2
-
3
- class Admin::CacheController < Admin::BaseController
4
- def show
5
- @cache_size = 0
6
- @cache_number = 0
7
-
8
- FileUtils.mkdir_p(Rails.application.config.action_controller.page_cache_directory) unless File.exist?(Rails.application.config.action_controller.page_cache_directory)
9
-
10
- Find.find(Rails.application.config.action_controller.page_cache_directory) do |path|
11
- if FileTest.directory?(path)
12
- if File.basename(path)[0] == '.'
13
- Find.prune
14
- else
15
- next
16
- end
17
- else
18
- @cache_size += FileTest.size(path)
19
- @cache_number += 1
20
- end
21
- end
22
- end
23
-
24
- def destroy
25
- begin
26
- PageCache.sweep_all
27
- flash[:success] = t('admin.cache.destroy.success')
28
- rescue
29
- flash[:error] = t('admin.cache.destroy.error')
30
- end
31
- redirect_to admin_cache_url
32
- end
33
- end
@@ -1,86 +0,0 @@
1
- class BlogSweeper < ActionController::Caching::Sweeper
2
- observe Blog, User, Article, Page, Comment, Trackback, Note, Tag
3
-
4
- def pending_sweeps
5
- @pending_sweeps ||= Set.new
6
- end
7
-
8
- def run_pending_page_sweeps
9
- pending_sweeps.each do |each|
10
- send(each)
11
- end
12
- end
13
-
14
- def after_comments_create
15
- expire_for(controller.send(:instance_variable_get, :@comment))
16
- end
17
-
18
- alias after_comments_update after_comments_create
19
- alias after_articles_comment after_comments_create
20
-
21
- def after_comments_destroy
22
- expire_for(controller.send(:instance_variable_get, :@comment), true)
23
- end
24
-
25
- alias after_articles_nuke_comment after_comments_destroy
26
-
27
- def after_articles_trackback
28
- expire_for(controller.send(:instance_variable_get, :@trackback))
29
- end
30
-
31
- def after_articles_nuke_trackback
32
- expire_for(controller.send(:instance_variable_get, :@trackback), true)
33
- end
34
-
35
- def after_save(record)
36
- expire_for(record) unless record.is_a?(Article) && record.state == :draft
37
- end
38
-
39
- def after_destroy(record)
40
- expire_for(record, true)
41
- end
42
-
43
- # TODO: Simplify this. Almost every sweep amounts to a sweep_all.
44
- def expire_for(record, destroying = false)
45
- case record
46
- when Page
47
- pending_sweeps << :sweep_pages
48
- when Content
49
- if record.invalidates_cache?(destroying)
50
- pending_sweeps << :sweep_articles << :sweep_pages
51
- end
52
- when Tag
53
- pending_sweeps << :sweep_articles << :sweep_pages
54
- when Blog, User, Comment, Trackback
55
- pending_sweeps << :sweep_all << :sweep_theme
56
- end
57
- run_pending_page_sweeps unless controller
58
- end
59
-
60
- def sweep_all
61
- PageCache.sweep_all
62
- end
63
-
64
- def sweep_theme
65
- PageCache.sweep_theme_cache
66
- end
67
-
68
- def sweep_articles
69
- PageCache.sweep_all
70
- end
71
-
72
- def sweep_pages
73
- PageCache.zap_pages(%w(pages))
74
- end
75
-
76
- def logger
77
- @logger ||= ::Rails.logger || Logger.new(STDERR)
78
- end
79
-
80
- private
81
-
82
- def callback(timing)
83
- super
84
- run_pending_page_sweeps if timing == :after
85
- end
86
- end
@@ -1,33 +0,0 @@
1
- # FIXME: This class is not a model anymore. Move elsewhere?
2
- class PageCache
3
- def self.logger
4
- ::Rails.logger
5
- end
6
-
7
- def logger
8
- ::Rails.logger
9
- end
10
-
11
- def self.public_path
12
- ActionController::Base.page_cache_directory
13
- end
14
-
15
- # Delete all file save in path_cache by page_cache system
16
- def self.sweep_all
17
- zap_pages(%w(*))
18
- end
19
-
20
- def self.sweep_theme_cache
21
- zap_pages(%w(images/theme/* stylesheets/theme/* javascripts/theme/*))
22
- end
23
-
24
- def self.zap_pages(paths)
25
- # Ensure no one is going to wipe his own blog public directory
26
- # It happened once on a release and was no fun at all
27
- return if public_path == "#{::Rails.root}/public"
28
- paths.each do |v|
29
- FileUtils.rm_rf(Dir.glob(public_path + "/#{v}"))
30
- end
31
- true
32
- end
33
- end
@@ -1,18 +0,0 @@
1
- <% content_for :page_heading do %>
2
- <h2>
3
- <i class="glyphicon glyphicon-large glyphicon-cog"></i>
4
- <%= t(".cache") %>
5
- </h2>
6
- <% end %>
7
-
8
- <p class='alert alert-info'><%= t(".explanation") %></p>
9
-
10
- <div class='well'>
11
- <p><%= t(".stats", files_count: @cache_number.to_i, size: @cache_size.to_i / 1000) %></p>
12
- <hr>
13
- <%= form_tag(admin_cache_path, method: :delete) do %>
14
- <div class='form-group'>
15
- <%= submit_tag(t(".sweep_cache"), class: 'btn btn-primary') %>
16
- </div>
17
- <% end %>
18
- </div>