manage_cache 0.0.1

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.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +5 -0
  4. data/Rakefile +34 -0
  5. data/lib/manage_cache/version.rb +3 -0
  6. data/lib/manage_cache.rb +93 -0
  7. data/lib/tasks/manage_cache_tasks.rake +4 -0
  8. data/test/cache_dumper_test.rb +9 -0
  9. data/test/dummy/README.rdoc +28 -0
  10. data/test/dummy/Rakefile +6 -0
  11. data/test/dummy/app/assets/javascripts/application.js +13 -0
  12. data/test/dummy/app/assets/javascripts/shoes.js +2 -0
  13. data/test/dummy/app/assets/javascripts/users.js +2 -0
  14. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  15. data/test/dummy/app/assets/stylesheets/scaffold.css +56 -0
  16. data/test/dummy/app/assets/stylesheets/shoes.css +4 -0
  17. data/test/dummy/app/assets/stylesheets/users.css +4 -0
  18. data/test/dummy/app/controllers/application_controller.rb +5 -0
  19. data/test/dummy/app/controllers/users_controller.rb +9 -0
  20. data/test/dummy/app/helpers/application_helper.rb +2 -0
  21. data/test/dummy/app/models/shoe.rb +11 -0
  22. data/test/dummy/app/models/user.rb +11 -0
  23. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  24. data/test/dummy/app/views/users/index.html.erb +38 -0
  25. data/test/dummy/app/views/users/show.html.erb +3 -0
  26. data/test/dummy/bin/bundle +3 -0
  27. data/test/dummy/bin/rails +4 -0
  28. data/test/dummy/bin/rake +4 -0
  29. data/test/dummy/bin/setup +29 -0
  30. data/test/dummy/config/application.rb +26 -0
  31. data/test/dummy/config/boot.rb +5 -0
  32. data/test/dummy/config/database.yml +25 -0
  33. data/test/dummy/config/environment.rb +5 -0
  34. data/test/dummy/config/environments/development.rb +41 -0
  35. data/test/dummy/config/environments/production.rb +79 -0
  36. data/test/dummy/config/environments/test.rb +42 -0
  37. data/test/dummy/config/initializers/assets.rb +11 -0
  38. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  39. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  40. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  41. data/test/dummy/config/initializers/inflections.rb +16 -0
  42. data/test/dummy/config/initializers/mime_types.rb +4 -0
  43. data/test/dummy/config/initializers/session_store.rb +3 -0
  44. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  45. data/test/dummy/config/locales/en.yml +23 -0
  46. data/test/dummy/config/routes.rb +58 -0
  47. data/test/dummy/config/secrets.yml +22 -0
  48. data/test/dummy/config.ru +4 -0
  49. data/test/dummy/db/development.sqlite3 +0 -0
  50. data/test/dummy/db/migrate/20160108161921_create_users.rb +9 -0
  51. data/test/dummy/db/migrate/20160112120846_create_shoes.rb +11 -0
  52. data/test/dummy/db/schema.rb +30 -0
  53. data/test/dummy/db/test.sqlite3 +0 -0
  54. data/test/dummy/log/test.log +1614 -0
  55. data/test/dummy/public/404.html +67 -0
  56. data/test/dummy/public/422.html +67 -0
  57. data/test/dummy/public/500.html +66 -0
  58. data/test/dummy/public/favicon.ico +0 -0
  59. data/test/dummy/test/controllers/users_controller_test.rb +57 -0
  60. data/test/dummy/test/fixtures/shoes.yml +9 -0
  61. data/test/dummy/test/fixtures/users.yml +7 -0
  62. data/test/dummy/test/models/user_test.rb +14 -0
  63. data/test/test_helper.rb +21 -0
  64. metadata +191 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,57 @@
1
+ require 'test_helper'
2
+
3
+ class UsersControllerTest < ActionController::TestCase
4
+
5
+ def setup
6
+ # fixtures not working :(
7
+ #@hans = users(:hans)
8
+ @hans = User.create(name: 'Hans')
9
+ @xaver = User.create(name: 'Xaver')
10
+
11
+ @puma = Shoe.create(name: 'Puma', color: 'red', user_id: @hans.id)
12
+ @nike = Shoe.create(name: 'Nike', color: 'blue', user_id: @hans.id)
13
+ @saucony = Shoe.create(name: 'Saucony', color: 'yellow', user_id: @hans.id)
14
+
15
+ Rails.cache.clear
16
+ end
17
+
18
+ def teardown
19
+ Rails.cache.clear
20
+ end
21
+
22
+ test "users#show cache should be updated after user update" do
23
+ get :show, {id: @hans.id}
24
+ assert_match(/Hans/, Rails.cache.read("views/#{@hans.cache_key_for(:show)}"))
25
+
26
+ @hans.update(name: 'Peter')
27
+ assert_nil(Rails.cache.read("views/#{@hans.cache_key_for(:show)}"))
28
+
29
+ get :show, {id: @hans.id}
30
+ assert_match(/Peter/, Rails.cache.read("views/#{@hans.cache_key_for(:show)}"))
31
+ end
32
+
33
+
34
+ test "users#index row_name-cache should be updated after user update" do
35
+ get :index
36
+ assert_match(/is Hans/, Rails.cache.read("views/#{@hans.cache_key_for(:row_name)}"))
37
+
38
+ @hans.update(name: 'Peter')
39
+ assert_nil(Rails.cache.read("views/#{@hans.cache_key_for(:row_name)}"))
40
+
41
+ get :index
42
+ assert_match(/is Peter/, Rails.cache.read("views/#{@hans.cache_key_for(:row_name)}"))
43
+ get :index
44
+ end
45
+
46
+
47
+ test "users#index users_shoes-cache should be updated after user update" do
48
+ get :index
49
+ assert_match(/Puma: red/, Rails.cache.read("views/#{@hans.shoes.last.try(:cache_key_for, :users_shoes)}"))
50
+
51
+ @puma.update(color: 'violet')
52
+ assert_nil(Rails.cache.read("views/#{@hans.shoes.last.try(:cache_key_for, :users_shoes)}"))
53
+
54
+ get :index
55
+ assert_match(/Puma: violet/, Rails.cache.read("views/#{@hans.shoes.last.try(:cache_key_for, :users_shoes)}"))
56
+ end
57
+ end
@@ -0,0 +1,9 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ one:
4
+ name: MyString
5
+ user_id: 1
6
+
7
+ two:
8
+ name: MyString
9
+ user_id: 1
@@ -0,0 +1,7 @@
1
+ # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
2
+
3
+ hans:
4
+ name: Hans
5
+
6
+ peter:
7
+ name: Peter
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class UserTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ #@user = users(:hans)
7
+ @user = User.create(name: 'Hans')
8
+ end
9
+
10
+ test "cache_key_for should return the right key" do
11
+ assert_equal @user.cache_key_for(:show), {spec: :show, user: @user.id, updated_at: @user.updated_at}.inject([]){ |mem, (k,v)| mem << "#{k}-#{v}" }.join('/')
12
+ end
13
+
14
+ end
@@ -0,0 +1,21 @@
1
+ # Configure Rails Environment
2
+ ENV["RAILS_ENV"] = "test"
3
+
4
+ require File.expand_path("../../test/dummy/config/environment.rb", __FILE__)
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../test/dummy/db/migrate", __FILE__)]
6
+ require "rails/test_help"
7
+
8
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
9
+ # to be shown.
10
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
11
+
12
+ # Load support files
13
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
14
+
15
+ # Load fixtures from the engine
16
+ if ActiveSupport::TestCase.respond_to?(:fixture_path=)
17
+ ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
18
+ ActionDispatch::IntegrationTest.fixture_path = ActiveSupport::TestCase.fixture_path
19
+ ActiveSupport::TestCase.fixtures :all
20
+ end
21
+
metadata ADDED
@@ -0,0 +1,191 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: manage_cache
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - cgregor
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: 'rails: manage cache deletion and cache_keys in ActiveRecord'
42
+ email:
43
+ - chrgregor@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - MIT-LICENSE
49
+ - README.rdoc
50
+ - Rakefile
51
+ - lib/manage_cache.rb
52
+ - lib/manage_cache/version.rb
53
+ - lib/tasks/manage_cache_tasks.rake
54
+ - test/cache_dumper_test.rb
55
+ - test/dummy/README.rdoc
56
+ - test/dummy/Rakefile
57
+ - test/dummy/app/assets/javascripts/application.js
58
+ - test/dummy/app/assets/javascripts/shoes.js
59
+ - test/dummy/app/assets/javascripts/users.js
60
+ - test/dummy/app/assets/stylesheets/application.css
61
+ - test/dummy/app/assets/stylesheets/scaffold.css
62
+ - test/dummy/app/assets/stylesheets/shoes.css
63
+ - test/dummy/app/assets/stylesheets/users.css
64
+ - test/dummy/app/controllers/application_controller.rb
65
+ - test/dummy/app/controllers/users_controller.rb
66
+ - test/dummy/app/helpers/application_helper.rb
67
+ - test/dummy/app/models/shoe.rb
68
+ - test/dummy/app/models/user.rb
69
+ - test/dummy/app/views/layouts/application.html.erb
70
+ - test/dummy/app/views/users/index.html.erb
71
+ - test/dummy/app/views/users/show.html.erb
72
+ - test/dummy/bin/bundle
73
+ - test/dummy/bin/rails
74
+ - test/dummy/bin/rake
75
+ - test/dummy/bin/setup
76
+ - test/dummy/config.ru
77
+ - test/dummy/config/application.rb
78
+ - test/dummy/config/boot.rb
79
+ - test/dummy/config/database.yml
80
+ - test/dummy/config/environment.rb
81
+ - test/dummy/config/environments/development.rb
82
+ - test/dummy/config/environments/production.rb
83
+ - test/dummy/config/environments/test.rb
84
+ - test/dummy/config/initializers/assets.rb
85
+ - test/dummy/config/initializers/backtrace_silencers.rb
86
+ - test/dummy/config/initializers/cookies_serializer.rb
87
+ - test/dummy/config/initializers/filter_parameter_logging.rb
88
+ - test/dummy/config/initializers/inflections.rb
89
+ - test/dummy/config/initializers/mime_types.rb
90
+ - test/dummy/config/initializers/session_store.rb
91
+ - test/dummy/config/initializers/wrap_parameters.rb
92
+ - test/dummy/config/locales/en.yml
93
+ - test/dummy/config/routes.rb
94
+ - test/dummy/config/secrets.yml
95
+ - test/dummy/db/development.sqlite3
96
+ - test/dummy/db/migrate/20160108161921_create_users.rb
97
+ - test/dummy/db/migrate/20160112120846_create_shoes.rb
98
+ - test/dummy/db/schema.rb
99
+ - test/dummy/db/test.sqlite3
100
+ - test/dummy/log/test.log
101
+ - test/dummy/public/404.html
102
+ - test/dummy/public/422.html
103
+ - test/dummy/public/500.html
104
+ - test/dummy/public/favicon.ico
105
+ - test/dummy/test/controllers/users_controller_test.rb
106
+ - test/dummy/test/fixtures/shoes.yml
107
+ - test/dummy/test/fixtures/users.yml
108
+ - test/dummy/test/models/user_test.rb
109
+ - test/test_helper.rb
110
+ homepage: https://github.com/grgr/manage_cache
111
+ licenses:
112
+ - MIT
113
+ metadata: {}
114
+ post_install_message:
115
+ rdoc_options: []
116
+ require_paths:
117
+ - lib
118
+ required_ruby_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ required_rubygems_version: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: '0'
128
+ requirements: []
129
+ rubyforge_project:
130
+ rubygems_version: 2.4.6
131
+ signing_key:
132
+ specification_version: 4
133
+ summary: 'rails: manage cache deletion and cache_keys in ActiveRecord'
134
+ test_files:
135
+ - test/test_helper.rb
136
+ - test/dummy/test/fixtures/users.yml
137
+ - test/dummy/test/fixtures/shoes.yml
138
+ - test/dummy/test/models/user_test.rb
139
+ - test/dummy/test/controllers/users_controller_test.rb
140
+ - test/dummy/config.ru
141
+ - test/dummy/README.rdoc
142
+ - test/dummy/log/test.log
143
+ - test/dummy/app/models/user.rb
144
+ - test/dummy/app/models/shoe.rb
145
+ - test/dummy/app/controllers/users_controller.rb
146
+ - test/dummy/app/controllers/application_controller.rb
147
+ - test/dummy/app/helpers/application_helper.rb
148
+ - test/dummy/app/views/layouts/application.html.erb
149
+ - test/dummy/app/views/users/index.html.erb
150
+ - test/dummy/app/views/users/show.html.erb
151
+ - test/dummy/app/assets/stylesheets/scaffold.css
152
+ - test/dummy/app/assets/stylesheets/shoes.css
153
+ - test/dummy/app/assets/stylesheets/users.css
154
+ - test/dummy/app/assets/stylesheets/application.css
155
+ - test/dummy/app/assets/javascripts/shoes.js
156
+ - test/dummy/app/assets/javascripts/users.js
157
+ - test/dummy/app/assets/javascripts/application.js
158
+ - test/dummy/public/500.html
159
+ - test/dummy/public/422.html
160
+ - test/dummy/public/404.html
161
+ - test/dummy/public/favicon.ico
162
+ - test/dummy/Rakefile
163
+ - test/dummy/bin/setup
164
+ - test/dummy/bin/rake
165
+ - test/dummy/bin/bundle
166
+ - test/dummy/bin/rails
167
+ - test/dummy/db/schema.rb
168
+ - test/dummy/db/development.sqlite3
169
+ - test/dummy/db/test.sqlite3
170
+ - test/dummy/db/migrate/20160108161921_create_users.rb
171
+ - test/dummy/db/migrate/20160112120846_create_shoes.rb
172
+ - test/dummy/config/environment.rb
173
+ - test/dummy/config/database.yml
174
+ - test/dummy/config/environments/development.rb
175
+ - test/dummy/config/environments/test.rb
176
+ - test/dummy/config/environments/production.rb
177
+ - test/dummy/config/application.rb
178
+ - test/dummy/config/routes.rb
179
+ - test/dummy/config/initializers/session_store.rb
180
+ - test/dummy/config/initializers/cookies_serializer.rb
181
+ - test/dummy/config/initializers/assets.rb
182
+ - test/dummy/config/initializers/mime_types.rb
183
+ - test/dummy/config/initializers/inflections.rb
184
+ - test/dummy/config/initializers/backtrace_silencers.rb
185
+ - test/dummy/config/initializers/wrap_parameters.rb
186
+ - test/dummy/config/initializers/filter_parameter_logging.rb
187
+ - test/dummy/config/secrets.yml
188
+ - test/dummy/config/locales/en.yml
189
+ - test/dummy/config/boot.rb
190
+ - test/cache_dumper_test.rb
191
+ has_rdoc: