interlock 1.0
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.
- data/CHANGELOG +2 -0
- data/LICENSE +184 -0
- data/Manifest +89 -0
- data/README +168 -0
- data/TODO +3 -0
- data/examples/memcached.yml +10 -0
- data/init.rb +2 -0
- data/interlock.gemspec +52 -0
- data/lib/interlock/action_controller.rb +123 -0
- data/lib/interlock/action_view.rb +34 -0
- data/lib/interlock/active_record.rb +29 -0
- data/lib/interlock/config.rb +78 -0
- data/lib/interlock/core_extensions.rb +64 -0
- data/lib/interlock/interlock.rb +112 -0
- data/lib/interlock/memcached.rb +30 -0
- data/lib/interlock.rb +25 -0
- data/test/integration/app/README +203 -0
- data/test/integration/app/Rakefile +10 -0
- data/test/integration/app/app/controllers/application.rb +10 -0
- data/test/integration/app/app/controllers/eval_controller.rb +7 -0
- data/test/integration/app/app/controllers/items_controller.rb +32 -0
- data/test/integration/app/app/helpers/application_helper.rb +3 -0
- data/test/integration/app/app/helpers/eval_helper.rb +2 -0
- data/test/integration/app/app/helpers/items_helper.rb +2 -0
- data/test/integration/app/app/models/item.rb +2 -0
- data/test/integration/app/app/views/items/list.html.erb +10 -0
- data/test/integration/app/app/views/items/recent.html.erb +14 -0
- data/test/integration/app/app/views/items/show.html.erb +8 -0
- data/test/integration/app/app/views/shared/_related.html.erb +6 -0
- data/test/integration/app/config/boot.rb +108 -0
- data/test/integration/app/config/database.yml +24 -0
- data/test/integration/app/config/environment.rb +25 -0
- data/test/integration/app/config/environments/development.rb +8 -0
- data/test/integration/app/config/environments/production.rb +18 -0
- data/test/integration/app/config/environments/test.rb +22 -0
- data/test/integration/app/config/initializers/inflections.rb +10 -0
- data/test/integration/app/config/initializers/mime_types.rb +5 -0
- data/test/integration/app/config/memcached.yml +9 -0
- data/test/integration/app/config/routes.rb +35 -0
- data/test/integration/app/coverage/cache-43041 +0 -0
- data/test/integration/app/coverage/index.html +414 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-action_controller_rb.html +733 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-action_view_rb.html +644 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-active_record_rb.html +639 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-config_rb.html +688 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-core_extensions_rb.html +674 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-interlock_rb.html +722 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-memcached_rb.html +640 -0
- data/test/integration/app/coverage/vendor-plugins-interlock-lib-interlock_rb.html +635 -0
- data/test/integration/app/db/migrate/001_create_items.rb +13 -0
- data/test/integration/app/db/schema.rb +21 -0
- data/test/integration/app/doc/README_FOR_APP +2 -0
- data/test/integration/app/public/404.html +30 -0
- data/test/integration/app/public/422.html +30 -0
- data/test/integration/app/public/500.html +30 -0
- data/test/integration/app/public/dispatch.cgi +10 -0
- data/test/integration/app/public/dispatch.fcgi +24 -0
- data/test/integration/app/public/dispatch.rb +10 -0
- data/test/integration/app/public/favicon.ico +0 -0
- data/test/integration/app/public/images/rails.png +0 -0
- data/test/integration/app/public/index.html +277 -0
- data/test/integration/app/public/javascripts/application.js +2 -0
- data/test/integration/app/public/javascripts/controls.js +963 -0
- data/test/integration/app/public/javascripts/dragdrop.js +972 -0
- data/test/integration/app/public/javascripts/effects.js +1120 -0
- data/test/integration/app/public/javascripts/prototype.js +4200 -0
- data/test/integration/app/public/robots.txt +5 -0
- data/test/integration/app/script/about +3 -0
- data/test/integration/app/script/console +3 -0
- data/test/integration/app/script/destroy +3 -0
- data/test/integration/app/script/generate +3 -0
- data/test/integration/app/script/performance/benchmarker +3 -0
- data/test/integration/app/script/performance/profiler +3 -0
- data/test/integration/app/script/performance/request +3 -0
- data/test/integration/app/script/plugin +3 -0
- data/test/integration/app/script/process/inspector +3 -0
- data/test/integration/app/script/process/reaper +3 -0
- data/test/integration/app/script/process/spawner +3 -0
- data/test/integration/app/script/runner +3 -0
- data/test/integration/app/script/server +3 -0
- data/test/integration/app/test/fixtures/items.yml +13 -0
- data/test/integration/app/test/functional/eval_controller_test.rb +10 -0
- data/test/integration/app/test/functional/items_controller_test.rb +10 -0
- data/test/integration/app/test/test_helper.rb +9 -0
- data/test/integration/app/test/unit/item_test.rb +8 -0
- data/test/integration/server_test.rb +161 -0
- data/test/setup.rb +15 -0
- data/test/teardown.rb +4 -0
- data/test/test_helper.rb +13 -0
- data/test/unit/memcached_test.rb +45 -0
- data.tar.gz.sig +0 -0
- metadata +172 -0
- metadata.gz.sig +1 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
|
|
2
|
+
one:
|
|
3
|
+
id: 1
|
|
4
|
+
name: Artichoke
|
|
5
|
+
description: The Globe Artichoke (Cynara scolymus) is a perennial thistle originating in southern Europe around the Mediterranean.
|
|
6
|
+
created_at: 2007-12-04 13:47:27
|
|
7
|
+
updated_at: 2007-12-04 13:47:27
|
|
8
|
+
two:
|
|
9
|
+
id: 2
|
|
10
|
+
name: Fire Apparatus
|
|
11
|
+
description: A fire apparatus, fire engine, fire truck, or fire appliance is a vehicle designed to assist in fighting fires, by transporting firefighters to the scene, and providing them with access, water or other equipment.
|
|
12
|
+
created_at: 2007-12-04 13:47:27
|
|
13
|
+
updated_at: 2007-12-04 13:47:27
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
|
|
2
|
+
require "#{File.dirname(__FILE__)}/../test_helper"
|
|
3
|
+
require 'open-uri'
|
|
4
|
+
require 'cgi'
|
|
5
|
+
require 'fileutils'
|
|
6
|
+
|
|
7
|
+
class ServerTest < Test::Unit::TestCase
|
|
8
|
+
|
|
9
|
+
PORT = 43041
|
|
10
|
+
URL = "http://localhost:#{PORT}/"
|
|
11
|
+
LOG = "#{HERE}/integration/app/log/development.log"
|
|
12
|
+
|
|
13
|
+
Dir.chdir RAILS_ROOT do
|
|
14
|
+
COVERAGE = "coverage"
|
|
15
|
+
RCOV = "#{COVERAGE}/cache-#{PORT}" # The port number must appear in `ps awx`
|
|
16
|
+
FileUtils.rm_rf(COVERAGE) if File.exist? COVERAGE
|
|
17
|
+
Dir.mkdir COVERAGE
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Tests
|
|
22
|
+
|
|
23
|
+
def test_render
|
|
24
|
+
assert_match(/Welcome/, browse)
|
|
25
|
+
assert_match(/Artichoke/, browse("items"))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_caching
|
|
29
|
+
browse("items")
|
|
30
|
+
assert_match(/cleared interlock local cache/, log)
|
|
31
|
+
assert_match(/all:untagged is running the controller block/, log)
|
|
32
|
+
assert_match(/all:untagged wrote/, log)
|
|
33
|
+
|
|
34
|
+
truncate
|
|
35
|
+
browse("items")
|
|
36
|
+
assert_match(/cleared interlock local cache/, log)
|
|
37
|
+
assert_no_match(/all:untagged is running the controller block/, log)
|
|
38
|
+
assert_no_match(/all:untagged wrote/, log)
|
|
39
|
+
assert_match(/all:untagged read from memcached/, log)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_broad_invalidation
|
|
43
|
+
browse("items")
|
|
44
|
+
assert_match(/all:untagged is running the controller block/, log)
|
|
45
|
+
assert_match(/all:untagged wrote/, log)
|
|
46
|
+
|
|
47
|
+
truncate
|
|
48
|
+
assert_equal "true", remote_eval("Item.find(:first).save!")
|
|
49
|
+
assert_match(/all:untagged invalidated by rule Item \-\> .all/, log)
|
|
50
|
+
browse("items")
|
|
51
|
+
assert_match(/all:untagged is running the controller block/, log)
|
|
52
|
+
assert_match(/all:untagged wrote/, log)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def test_narrow_invalidation
|
|
56
|
+
browse("items/show/1")
|
|
57
|
+
assert_match(/show:1:untagged is running the controller block/, log)
|
|
58
|
+
|
|
59
|
+
truncate
|
|
60
|
+
assert_equal "true", remote_eval("Item.find(2).save!")
|
|
61
|
+
assert_no_match(/show:1:untagged invalidated/, log)
|
|
62
|
+
browse("items/show/1")
|
|
63
|
+
assert_no_match(/show:1:untagged is running the controller block/, log)
|
|
64
|
+
|
|
65
|
+
truncate
|
|
66
|
+
assert_equal "true", remote_eval("Item.find(1).save!")
|
|
67
|
+
assert_match(/show:1:untagged invalidated/, log)
|
|
68
|
+
browse("items/show/1")
|
|
69
|
+
assert_match(/show:1:untagged is running the controller block/, log)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_caching_with_tag
|
|
73
|
+
sleep(3)
|
|
74
|
+
assert_no_match(/Artichoke/, browse("items/recent?seconds=3"))
|
|
75
|
+
assert_match(/recent:all:3 is running the controller block/, log)
|
|
76
|
+
|
|
77
|
+
truncate
|
|
78
|
+
assert_no_match(/Artichoke/, browse("items/recent?seconds=2"))
|
|
79
|
+
assert_match(/recent:all:2 is running the controller block/, log)
|
|
80
|
+
assert_no_match(/recent:all:3 is running the controller block/, log)
|
|
81
|
+
|
|
82
|
+
truncate
|
|
83
|
+
assert_no_match(/Artichoke/, browse("items/recent?seconds=3"))
|
|
84
|
+
assert_no_match(/recent:all:3 is running the controller block/, log)
|
|
85
|
+
|
|
86
|
+
truncate
|
|
87
|
+
remote_eval("Item.find(1).save!")
|
|
88
|
+
assert_match(/Artichoke/, browse("items/recent?seconds=3"))
|
|
89
|
+
assert_match(/recent:all:3 is running the controller block/, log)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_caching_with_ignore
|
|
93
|
+
assert_match(/Delicious cake/, browse('items'))
|
|
94
|
+
assert_match(/any:any:all:related is running the controller block/, log)
|
|
95
|
+
|
|
96
|
+
truncate
|
|
97
|
+
assert_match(/Delicious cake/, browse("items/show/2"))
|
|
98
|
+
assert_no_match(/any:any:all:related is running the controller block/, log)
|
|
99
|
+
|
|
100
|
+
truncate
|
|
101
|
+
remote_eval("Item.find(1).save!")
|
|
102
|
+
assert_match(/Delicious cake/, browse("items/show/2"))
|
|
103
|
+
assert_match(/any:any:all:related invalidated/, log)
|
|
104
|
+
assert_match(/any:any:all:related is running the controller block/, log)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
### Support methods
|
|
109
|
+
|
|
110
|
+
def setup
|
|
111
|
+
# We test against an actual running server in order to lock down the environment
|
|
112
|
+
# class reloading situation
|
|
113
|
+
Process.fork do
|
|
114
|
+
Dir.chdir RAILS_ROOT do
|
|
115
|
+
if $rcov
|
|
116
|
+
exec("rcov --aggregate #{RCOV} --exclude config\/.*,app\/.*,boot\/.*,script\/server --include-file vendor\/plugins\/interlock\/lib\/.*\.rb script/server -- -p #{PORT} &> #{LOG}")
|
|
117
|
+
else
|
|
118
|
+
exec("script/server -p #{PORT} &> #{LOG}")
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
sleep(0.2) while log !~ /available at 0.0.0.0.#{PORT}/
|
|
123
|
+
truncate
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
def teardown
|
|
127
|
+
# Process.kill(9, pid) doesn't work because Mongrel has double-forked itself away
|
|
128
|
+
while (pids = `ps awx | grep #{PORT} | grep -v grep | awk '{print $1}'`.split("\n")).any?
|
|
129
|
+
pids.each {|pid| system("kill #{pid}")}
|
|
130
|
+
sleep(0.2)
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def truncate
|
|
135
|
+
system("> #{LOG}")
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
def log
|
|
139
|
+
File.open(LOG, 'r') do |f|
|
|
140
|
+
f.read
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def browse(url = "")
|
|
145
|
+
flag = false
|
|
146
|
+
begin
|
|
147
|
+
open(URL + url).read
|
|
148
|
+
rescue Errno::ECONNREFUSED, OpenURI::HTTPError => e
|
|
149
|
+
raise "#{e.to_s}: #{URL + url}" if flag
|
|
150
|
+
flag = true
|
|
151
|
+
sleep 3
|
|
152
|
+
retry
|
|
153
|
+
end
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def remote_eval(string)
|
|
157
|
+
# Server doesn't run in our process, so invalidations here don't affect it
|
|
158
|
+
browse("eval?string=#{CGI.escape(string)}")
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
end
|
data/test/setup.rb
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
# Setup integration system for the integration suite
|
|
3
|
+
|
|
4
|
+
Dir.chdir "#{File.dirname(__FILE__)}/integration/app/" do
|
|
5
|
+
system "memcached -p 43042 &"
|
|
6
|
+
system "memcached -p 43043 &"
|
|
7
|
+
|
|
8
|
+
Dir.chdir "vendor/plugins" do
|
|
9
|
+
system "rm interlock; ln -s ../../../../../ interlock"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
system "rake db:create"
|
|
13
|
+
system "rake db:migrate"
|
|
14
|
+
system "rake db:fixtures:load"
|
|
15
|
+
end
|
data/test/teardown.rb
ADDED
data/test/test_helper.rb
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
$VERBOSE = nil
|
|
3
|
+
require 'rubygems'
|
|
4
|
+
require 'test/unit'
|
|
5
|
+
require 'multi_rails_init'
|
|
6
|
+
|
|
7
|
+
$rcov = ENV['RCOV']
|
|
8
|
+
require 'ruby-debug' unless $rcov
|
|
9
|
+
|
|
10
|
+
HERE = File.expand_path(File.dirname(__FILE__))
|
|
11
|
+
$LOAD_PATH << HERE
|
|
12
|
+
|
|
13
|
+
require 'integration/app/config/environment'
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
|
|
2
|
+
require "#{File.dirname(__FILE__)}/../test_helper"
|
|
3
|
+
|
|
4
|
+
class MemcachedTest < Test::Unit::TestCase
|
|
5
|
+
|
|
6
|
+
KEY = "memcached_test"
|
|
7
|
+
LOCK = "lock:#{KEY}"
|
|
8
|
+
|
|
9
|
+
def setup
|
|
10
|
+
CACHE.delete KEY
|
|
11
|
+
CACHE.delete LOCK
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_unlocked
|
|
15
|
+
assert_nil CACHE.get(KEY)
|
|
16
|
+
assert_nil CACHE.get(LOCK)
|
|
17
|
+
|
|
18
|
+
assert_nothing_raised do
|
|
19
|
+
CACHE.lock(KEY) { "A" }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
assert_nil CACHE.get(LOCK)
|
|
23
|
+
assert_equal("A", CACHE.get(KEY))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_locked
|
|
27
|
+
CACHE.set LOCK, "Bogus"
|
|
28
|
+
|
|
29
|
+
assert_raises MemCache::MemCacheError do
|
|
30
|
+
CACHE.lock(KEY, 30, 2) { "A" }
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
assert_equal("Bogus", CACHE.get(LOCK))
|
|
34
|
+
assert_nil CACHE.get(KEY)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_ensure_lock_release
|
|
38
|
+
assert_raises RuntimeError do
|
|
39
|
+
CACHE.lock(KEY) { raise }
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
assert_nil CACHE.get(LOCK)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
data.tar.gz.sig
ADDED
|
Binary file
|
metadata
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: interlock
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: "1.0"
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- ""
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain:
|
|
11
|
+
- |
|
|
12
|
+
-----BEGIN CERTIFICATE-----
|
|
13
|
+
MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQ0wCwYDVQQDDARldmFu
|
|
14
|
+
MRgwFgYKCZImiZPyLGQBGRYIY2xvdWRidXIxEjAQBgoJkiaJk/IsZAEZFgJzdDAe
|
|
15
|
+
Fw0wNzA5MTYxMDMzMDBaFw0wODA5MTUxMDMzMDBaMD0xDTALBgNVBAMMBGV2YW4x
|
|
16
|
+
GDAWBgoJkiaJk/IsZAEZFghjbG91ZGJ1cjESMBAGCgmSJomT8ixkARkWAnN0MIIB
|
|
17
|
+
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5C0Io89nyApnr+PvbNFge9Vs
|
|
18
|
+
yRWAlGBUEMahpXp28VrrfXZT0rAW7JBo4PlCE3jl4nE4dzE6gAdItSycjTosrw7A
|
|
19
|
+
Ir5+xoyl4Vb35adv56TIQQXvNz+BzlqnkAY5JN0CSBRTQb6mxS3hFyD/h4qgDosj
|
|
20
|
+
R2RFVzHqSxCS8xq4Ny8uzOwOi+Xyu4w67fI5JvnPvMxqrlR1eaIQHmxnf76RzC46
|
|
21
|
+
QO5QhufjAYGGXd960XzbQsQyTDUYJzrvT7AdOfiyZzKQykKt8dEpDn+QPjFTnGnT
|
|
22
|
+
QmgJBX5WJN0lHF2l1sbv3gh4Kn1tZu+kTUqeXY6ShAoDTyvZRiFqQdwh8w2lTQID
|
|
23
|
+
AQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU+WqJz3xQ
|
|
24
|
+
XSea1hRvvHWcIMgeeC4wDQYJKoZIhvcNAQEFBQADggEBAGLZ75jfOEW8Nsl26CTt
|
|
25
|
+
JFrWxQTcQT/UljeefVE3xYr7lc9oQjbqO3FOyued3qW7TaNEtZfSHoYeUSMYbpw1
|
|
26
|
+
XAwocIPuSRFDGM4B+hgQGVDx8PMGiJKom4qLXjO40UZsR7QyN/u869Vj45LURm6h
|
|
27
|
+
MBcPeqCASI+WNprj9+uZa2kmHiitrFqqfMBNlm5IFbn9XeYSta9AHVvs5QQqV2m5
|
|
28
|
+
hIPfLqCyxsn/YgOGvo6iwyQTWyTswamaAC3HRWZxIS1sfn/Ssqa7E7oQMkv5FAXr
|
|
29
|
+
x5rKePfXINf8XTJczkl9OBEYdE9aNdJsJpXD0asLgGVwBICS5Bjohp6mizJcDC1+
|
|
30
|
+
yZ0=
|
|
31
|
+
-----END CERTIFICATE-----
|
|
32
|
+
|
|
33
|
+
date: 2007-12-13 00:00:00 -05:00
|
|
34
|
+
default_executable:
|
|
35
|
+
dependencies:
|
|
36
|
+
- !ruby/object:Gem::Dependency
|
|
37
|
+
name: memcache_client
|
|
38
|
+
version_requirement:
|
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
40
|
+
requirements:
|
|
41
|
+
- - ">="
|
|
42
|
+
- !ruby/object:Gem::Version
|
|
43
|
+
version: 1.5.0
|
|
44
|
+
version:
|
|
45
|
+
description: An optimal-efficiency caching plugin for Rails.
|
|
46
|
+
email: ""
|
|
47
|
+
executables: []
|
|
48
|
+
|
|
49
|
+
extensions: []
|
|
50
|
+
|
|
51
|
+
extra_rdoc_files: []
|
|
52
|
+
|
|
53
|
+
files:
|
|
54
|
+
- CHANGELOG
|
|
55
|
+
- examples/memcached.yml
|
|
56
|
+
- init.rb
|
|
57
|
+
- lib/interlock/action_controller.rb
|
|
58
|
+
- lib/interlock/action_view.rb
|
|
59
|
+
- lib/interlock/active_record.rb
|
|
60
|
+
- lib/interlock/config.rb
|
|
61
|
+
- lib/interlock/core_extensions.rb
|
|
62
|
+
- lib/interlock/interlock.rb
|
|
63
|
+
- lib/interlock/memcached.rb
|
|
64
|
+
- lib/interlock.rb
|
|
65
|
+
- LICENSE
|
|
66
|
+
- Manifest
|
|
67
|
+
- README
|
|
68
|
+
- test/integration/app/app/controllers/application.rb
|
|
69
|
+
- test/integration/app/app/controllers/eval_controller.rb
|
|
70
|
+
- test/integration/app/app/controllers/items_controller.rb
|
|
71
|
+
- test/integration/app/app/helpers/application_helper.rb
|
|
72
|
+
- test/integration/app/app/helpers/eval_helper.rb
|
|
73
|
+
- test/integration/app/app/helpers/items_helper.rb
|
|
74
|
+
- test/integration/app/app/models/item.rb
|
|
75
|
+
- test/integration/app/app/views/items/list.html.erb
|
|
76
|
+
- test/integration/app/app/views/items/recent.html.erb
|
|
77
|
+
- test/integration/app/app/views/items/show.html.erb
|
|
78
|
+
- test/integration/app/app/views/shared/_related.html.erb
|
|
79
|
+
- test/integration/app/config/boot.rb
|
|
80
|
+
- test/integration/app/config/database.yml
|
|
81
|
+
- test/integration/app/config/environment.rb
|
|
82
|
+
- test/integration/app/config/environments/development.rb
|
|
83
|
+
- test/integration/app/config/environments/production.rb
|
|
84
|
+
- test/integration/app/config/environments/test.rb
|
|
85
|
+
- test/integration/app/config/initializers/inflections.rb
|
|
86
|
+
- test/integration/app/config/initializers/mime_types.rb
|
|
87
|
+
- test/integration/app/config/memcached.yml
|
|
88
|
+
- test/integration/app/config/routes.rb
|
|
89
|
+
- test/integration/app/coverage/cache-43041
|
|
90
|
+
- test/integration/app/coverage/index.html
|
|
91
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-action_controller_rb.html
|
|
92
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-action_view_rb.html
|
|
93
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-active_record_rb.html
|
|
94
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-config_rb.html
|
|
95
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-core_extensions_rb.html
|
|
96
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-interlock_rb.html
|
|
97
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock-memcached_rb.html
|
|
98
|
+
- test/integration/app/coverage/vendor-plugins-interlock-lib-interlock_rb.html
|
|
99
|
+
- test/integration/app/db/migrate/001_create_items.rb
|
|
100
|
+
- test/integration/app/db/schema.rb
|
|
101
|
+
- test/integration/app/doc/README_FOR_APP
|
|
102
|
+
- test/integration/app/public/404.html
|
|
103
|
+
- test/integration/app/public/422.html
|
|
104
|
+
- test/integration/app/public/500.html
|
|
105
|
+
- test/integration/app/public/dispatch.cgi
|
|
106
|
+
- test/integration/app/public/dispatch.fcgi
|
|
107
|
+
- test/integration/app/public/dispatch.rb
|
|
108
|
+
- test/integration/app/public/favicon.ico
|
|
109
|
+
- test/integration/app/public/images/rails.png
|
|
110
|
+
- test/integration/app/public/index.html
|
|
111
|
+
- test/integration/app/public/javascripts/application.js
|
|
112
|
+
- test/integration/app/public/javascripts/controls.js
|
|
113
|
+
- test/integration/app/public/javascripts/dragdrop.js
|
|
114
|
+
- test/integration/app/public/javascripts/effects.js
|
|
115
|
+
- test/integration/app/public/javascripts/prototype.js
|
|
116
|
+
- test/integration/app/public/robots.txt
|
|
117
|
+
- test/integration/app/Rakefile
|
|
118
|
+
- test/integration/app/README
|
|
119
|
+
- test/integration/app/script/about
|
|
120
|
+
- test/integration/app/script/console
|
|
121
|
+
- test/integration/app/script/destroy
|
|
122
|
+
- test/integration/app/script/generate
|
|
123
|
+
- test/integration/app/script/performance/benchmarker
|
|
124
|
+
- test/integration/app/script/performance/profiler
|
|
125
|
+
- test/integration/app/script/performance/request
|
|
126
|
+
- test/integration/app/script/plugin
|
|
127
|
+
- test/integration/app/script/process/inspector
|
|
128
|
+
- test/integration/app/script/process/reaper
|
|
129
|
+
- test/integration/app/script/process/spawner
|
|
130
|
+
- test/integration/app/script/runner
|
|
131
|
+
- test/integration/app/script/server
|
|
132
|
+
- test/integration/app/test/fixtures/items.yml
|
|
133
|
+
- test/integration/app/test/functional/eval_controller_test.rb
|
|
134
|
+
- test/integration/app/test/functional/items_controller_test.rb
|
|
135
|
+
- test/integration/app/test/test_helper.rb
|
|
136
|
+
- test/integration/app/test/unit/item_test.rb
|
|
137
|
+
- test/integration/server_test.rb
|
|
138
|
+
- test/setup.rb
|
|
139
|
+
- test/teardown.rb
|
|
140
|
+
- test/test_helper.rb
|
|
141
|
+
- test/unit/memcached_test.rb
|
|
142
|
+
- TODO
|
|
143
|
+
- interlock.gemspec
|
|
144
|
+
has_rdoc: true
|
|
145
|
+
homepage: http://blog.evanweaver.com/files/doc/fauna/interlock/
|
|
146
|
+
post_install_message:
|
|
147
|
+
rdoc_options: []
|
|
148
|
+
|
|
149
|
+
require_paths:
|
|
150
|
+
- lib
|
|
151
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
152
|
+
requirements:
|
|
153
|
+
- - ">="
|
|
154
|
+
- !ruby/object:Gem::Version
|
|
155
|
+
version: "0"
|
|
156
|
+
version:
|
|
157
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
158
|
+
requirements:
|
|
159
|
+
- - ">="
|
|
160
|
+
- !ruby/object:Gem::Version
|
|
161
|
+
version: "0"
|
|
162
|
+
version:
|
|
163
|
+
requirements: []
|
|
164
|
+
|
|
165
|
+
rubyforge_project: fauna
|
|
166
|
+
rubygems_version: 0.9.5
|
|
167
|
+
signing_key:
|
|
168
|
+
specification_version: 2
|
|
169
|
+
summary: An optimal-efficiency caching plugin for Rails.
|
|
170
|
+
test_files:
|
|
171
|
+
- test/integration/server_test.rb
|
|
172
|
+
- test/unit/memcached_test.rb
|
metadata.gz.sig
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
�����](��85�Ŧyvt�EF�kh��D� *"���##�z3�E��>�N��Y�}��R����ijͅ�@�J5I��i�[ �9D2۴4�,�U�8Va�4�3V�%@�D9U�s��͵�g!������>�,��wgX� �$y߿"hm��qq�|��>�g��3i���� �Ԇ�7����Ū�P�w͞7Q�ƥ�Jq����b�xBM� f����Q8*8�A��(�[��R�>�ikC�;�}ۯ��V
|