publify_core 9.0.0.pre2 → 9.0.0.pre3

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.

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>