jruby-ehcache 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,2 @@
1
+ *.DS_Store
2
+ pkg/*
@@ -1,29 +1,17 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jruby-ehcache (1.2.0)
5
- activesupport
4
+ jruby-ehcache (1.2.1)
6
5
  i18n
7
- jruby-ehcache
8
6
 
9
7
  GEM
10
8
  remote: http://rubygems.org/
11
9
  specs:
12
- activesupport (3.1.1)
13
- multi_json (~> 1.0)
14
- git (1.2.5)
15
10
  i18n (0.6.0)
16
- jeweler (1.6.4)
17
- bundler (~> 1.0)
18
- git (>= 1.2.5)
19
- rake
20
- multi_json (1.0.3)
21
- rake (0.8.7)
22
11
 
23
12
  PLATFORMS
24
13
  java
14
+ ruby
25
15
 
26
16
  DEPENDENCIES
27
- jeweler
28
17
  jruby-ehcache!
29
- rake
data/README.txt CHANGED
@@ -51,6 +51,15 @@ OR
51
51
  $ jruby -S gem install jruby-ehcache-rails3
52
52
 
53
53
 
54
+ == GEMFILE:
55
+
56
+ Add the gem as you normally would in your Gemfile, making sure to require
57
+ 'ehcache' explicitly. Here is an example of adding the rails3 gem to a Gemfile.
58
+
59
+ gem 'jruby-ehcache-rails3', :require => 'ehcache'
60
+
61
+
62
+
54
63
  == REQUIREMENTS:
55
64
 
56
65
  Tested with JRuby 1.5.3.
data/Rakefile CHANGED
@@ -1,62 +1,13 @@
1
- require 'rake/testtask'
2
- require 'rake/rdoctask'
3
-
4
- task :default => [ :test ]
5
-
6
- desc "Executes the test suite"
7
- Rake::TestTask.new do |t|
8
- t.name = :test
9
- t.libs << 'lib' << 'ext' << 'test'
10
- t.pattern = "test/test_*.rb"
11
- end
12
-
13
- begin
14
- require 'jeweler'
15
- rescue LoadError
16
- puts "Jeweler not available. Install it with: gem install jeweler"
17
- end
18
-
19
- def defaults(gemspec)
20
- gemspec.rubyforge_project = 'ehcache'
21
- gemspec.homepage = "http://ehcache.rubyforge.org"
22
- gemspec.authors = ["Dylan Stamat", "Jason Voegele"]
23
- gemspec.email = ['dstamat@elctech.com', 'jvoegele@terracotta.org']
24
- end
25
-
26
- Jeweler::Tasks.new do |gemspec|
27
- defaults(gemspec)
28
- gemspec.name = "jruby-ehcache"
29
- gemspec.summary = "JRuby interface to Ehcache"
30
- gemspec.description = "JRuby interface to the popular Java caching library Ehcache"
31
- gemspec.files.exclude '.gitignore'
32
-
33
- # These files go in the jruby-ehcache-rails2 and jruby-ehcache-rails3 gems
34
- gemspec.files.exclude 'lib/active_support/**/*'
35
- gemspec.files.exclude 'lib/ehcache/active_support_store.rb'
36
- gemspec.add_dependency 'activesupport'
37
- gemspec.add_dependency 'i18n' # activesupport 'requires' this but not in a bundler friendly way
38
- gemspec.add_development_dependency 'rake'
39
- gemspec.add_development_dependency 'jeweler'
40
- end
41
-
42
- Jeweler::Tasks.new do |gemspec|
43
- defaults(gemspec)
44
- gemspec.name = 'jruby-ehcache-rails3'
45
- gemspec.summary = 'Rails 3 cache store provider using Ehcache'
46
- gemspec.description = 'Rails 3 cache store provider using Ehcache'
47
- gemspec.files = FileList['lib/active_support/**/*', 'lib/ehcache/active_support_store.rb']
48
- gemspec.test_files = []
49
- gemspec.add_dependency 'jruby-ehcache', ">=1.2.0"
50
- end
51
-
52
- Jeweler::Tasks.new do |gemspec|
53
- defaults(gemspec)
54
- gemspec.name = 'jruby-ehcache-rails2'
55
- gemspec.summary = 'Rails 2 cache store provider using Ehcache'
56
- gemspec.description = 'Rails 2 cache store provider using Ehcache'
57
- gemspec.files = FileList['lib/active_support/**/*', 'lib/ehcache/active_support_store.rb']
58
- gemspec.test_files = []
59
- gemspec.add_dependency 'jruby-ehcache', ">=1.2.0"
60
- end
61
-
62
- Jeweler::GemcutterTasks.new
1
+ require "bundler/gem_helper"
2
+ Bundler::GemHelper.install_tasks :name => "jruby-ehcache"
3
+
4
+ task :default => [ :test ]
5
+
6
+ require 'rdoc/task'
7
+ require 'rake/testtask'
8
+ desc "Executes the test suite"
9
+ Rake::TestTask.new do |t|
10
+ t.name = :test
11
+ t.libs << 'lib' << 'ext' << 'test'
12
+ t.pattern = "test/test_*.rb"
13
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0
1
+ 1.2.1
@@ -1,60 +1,28 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "ehcache/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
6
  s.name = %q{jruby-ehcache-rails2}
8
- s.version = "1.2.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.version = Ehcache::VERSION
11
8
  s.authors = [%q{Dylan Stamat}, %q{Jason Voegele}]
12
9
  s.date = %q{2012-03-14}
13
- s.description = %q{Rails 2 cache store provider using Ehcache}
10
+ s.description = %q{The Ehcache cache store provider for Rails 2}
14
11
  s.email = [%q{dstamat@elctech.com}, %q{jvoegele@terracotta.org}]
15
- s.executables = [%q{ehcache}]
16
- s.extra_rdoc_files = [
17
- "README.txt"
18
- ]
19
- s.files = [
20
- "lib/active_support/cache/ehcache_store.rb",
21
- "lib/active_support/ehcache_store.rb",
22
- "lib/ehcache/active_support_store.rb"
23
- ]
12
+ s.extra_rdoc_files = [ "README.txt" ]
24
13
  s.homepage = %q{http://ehcache.rubyforge.org}
25
- s.require_paths = [%q{lib}]
26
14
  s.rubyforge_project = %q{ehcache}
27
15
  s.rubygems_version = %q{1.8.9}
28
16
  s.summary = %q{Rails 2 cache store provider using Ehcache}
29
17
 
30
- if s.respond_to? :specification_version then
31
- s.specification_version = 3
18
+ s.files = `git ls-files`.split("\n").concat(
19
+ ["lib/active_support/ehcache_store.rb",
20
+ "lib/ehcache/active_support_store.rb"])
32
21
 
33
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
34
- s.add_runtime_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
35
- s.add_runtime_dependency(%q<jruby-ehcache>, [">= 0"])
36
- s.add_development_dependency(%q<rake>, [">= 0"])
37
- s.add_development_dependency(%q<jeweler>, [">= 0"])
38
- s.add_development_dependency(%q<rake>, [">= 0"])
39
- s.add_development_dependency(%q<jeweler>, [">= 0"])
40
- s.add_runtime_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
41
- else
42
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
43
- s.add_dependency(%q<jruby-ehcache>, [">= 0"])
44
- s.add_dependency(%q<rake>, [">= 0"])
45
- s.add_dependency(%q<jeweler>, [">= 0"])
46
- s.add_dependency(%q<rake>, [">= 0"])
47
- s.add_dependency(%q<jeweler>, [">= 0"])
48
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
49
- end
50
- else
51
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
52
- s.add_dependency(%q<jruby-ehcache>, [">= 0"])
53
- s.add_dependency(%q<rake>, [">= 0"])
54
- s.add_dependency(%q<jeweler>, [">= 0"])
55
- s.add_dependency(%q<rake>, [">= 0"])
56
- s.add_dependency(%q<jeweler>, [">= 0"])
57
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
58
- end
59
- end
22
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
60
25
 
26
+ s.add_runtime_dependency "i18n"
27
+ s.add_runtime_dependency "jruby-ehcache"
28
+ end
@@ -1,60 +1,28 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "ehcache/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
6
  s.name = %q{jruby-ehcache-rails3}
8
- s.version = "1.2.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.version = Ehcache::VERSION
11
8
  s.authors = [%q{Dylan Stamat}, %q{Jason Voegele}]
12
9
  s.date = %q{2012-03-14}
13
- s.description = %q{Rails 3 cache store provider using Ehcache}
10
+ s.description = %q{The Ehcache cache store provider for Rails 3}
14
11
  s.email = [%q{dstamat@elctech.com}, %q{jvoegele@terracotta.org}]
15
- s.executables = [%q{ehcache}]
16
- s.extra_rdoc_files = [
17
- "README.txt"
18
- ]
19
- s.files = [
20
- "lib/active_support/cache/ehcache_store.rb",
21
- "lib/active_support/ehcache_store.rb",
22
- "lib/ehcache/active_support_store.rb"
23
- ]
12
+ s.extra_rdoc_files = [ "README.txt" ]
24
13
  s.homepage = %q{http://ehcache.rubyforge.org}
25
- s.require_paths = [%q{lib}]
26
14
  s.rubyforge_project = %q{ehcache}
27
15
  s.rubygems_version = %q{1.8.9}
28
16
  s.summary = %q{Rails 3 cache store provider using Ehcache}
29
17
 
30
- if s.respond_to? :specification_version then
31
- s.specification_version = 3
18
+ s.files = `git ls-files`.split("\n").concat(
19
+ ["lib/active_support/cache/ehcache_store.rb",
20
+ "lib/ehcache/active_support_store.rb"])
32
21
 
33
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
34
- s.add_runtime_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
35
- s.add_runtime_dependency(%q<jruby-ehcache>, [">= 0"])
36
- s.add_development_dependency(%q<rake>, [">= 0"])
37
- s.add_development_dependency(%q<jeweler>, [">= 0"])
38
- s.add_development_dependency(%q<rake>, [">= 0"])
39
- s.add_development_dependency(%q<jeweler>, [">= 0"])
40
- s.add_runtime_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
41
- else
42
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
43
- s.add_dependency(%q<jruby-ehcache>, [">= 0"])
44
- s.add_dependency(%q<rake>, [">= 0"])
45
- s.add_dependency(%q<jeweler>, [">= 0"])
46
- s.add_dependency(%q<rake>, [">= 0"])
47
- s.add_dependency(%q<jeweler>, [">= 0"])
48
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
49
- end
50
- else
51
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
52
- s.add_dependency(%q<jruby-ehcache>, [">= 0"])
53
- s.add_dependency(%q<rake>, [">= 0"])
54
- s.add_dependency(%q<jeweler>, [">= 0"])
55
- s.add_dependency(%q<rake>, [">= 0"])
56
- s.add_dependency(%q<jeweler>, [">= 0"])
57
- s.add_dependency(%q<jruby-ehcache>, [">= 1.2.0"])
58
- end
59
- end
22
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
60
25
 
26
+ s.add_runtime_dependency "i18n"
27
+ s.add_runtime_dependency "jruby-ehcache"
28
+ end
@@ -1,117 +1,24 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "ehcache/version"
5
4
 
6
5
  Gem::Specification.new do |s|
7
6
  s.name = %q{jruby-ehcache}
8
- s.version = "1.2.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
7
+ s.version = Ehcache::VERSION
11
8
  s.authors = [%q{Dylan Stamat}, %q{Jason Voegele}]
12
9
  s.date = %q{2012-03-14}
13
10
  s.description = %q{JRuby interface to the popular Java caching library Ehcache}
14
11
  s.email = [%q{dstamat@elctech.com}, %q{jvoegele@terracotta.org}]
15
- s.executables = [%q{ehcache}]
16
- s.extra_rdoc_files = [
17
- "README.txt"
18
- ]
19
- s.files = [
20
- "Gemfile",
21
- "Gemfile.lock",
22
- "History.txt",
23
- "License.txt",
24
- "Manifest.txt",
25
- "PostInstall.txt",
26
- "README.txt",
27
- "Rakefile",
28
- "VERSION",
29
- "bin/ehcache",
30
- "config/ehcache.yml",
31
- "config/ehcache_manual_rmi.yml",
32
- "examples/ehcache.xml",
33
- "examples/jruby-ehcache.rb",
34
- "ext/ehcache-2.4.6/ehcache-core-2.4.6.jar",
35
- "ext/ehcache-2.4.6/ehcache-terracotta-2.4.6.jar",
36
- "ext/ehcache-2.4.6/slf4j-api-1.6.1.jar",
37
- "ext/ehcache-2.4.6/slf4j-jdk14-1.6.1.jar",
38
- "ext/ehcache-2.4.6/terracotta-toolkit-1.3-runtime-3.3.0.jar",
39
- "jruby-ehcache-rails2.gemspec",
40
- "jruby-ehcache-rails3.gemspec",
41
- "jruby-ehcache.gemspec",
42
- "lib/ehcache.rb",
43
- "lib/ehcache/cache.rb",
44
- "lib/ehcache/cache_manager.rb",
45
- "lib/ehcache/config.rb",
46
- "lib/ehcache/element.rb",
47
- "lib/ehcache/extensions.rb",
48
- "lib/ehcache/java.rb",
49
- "lib/ehcache/yaml_config.rb",
50
- "script/console",
51
- "script/destroy",
52
- "script/generate",
53
- "script/txt2html",
54
- "spec/cache_manager_spec.rb",
55
- "spec/cache_spec.rb",
56
- "spec/spec.opts",
57
- "spec/spec_helper.rb",
58
- "tasks/deployment.rake",
59
- "tasks/environment.rake",
60
- "tasks/website.rake",
61
- "test/ehcache.xml",
62
- "test/ehcache.yml",
63
- "test/test_cache.rb",
64
- "test/test_cache_manager.rb",
65
- "test/test_configuration.rb",
66
- "test/test_ehcache.rb",
67
- "test/test_element.rb",
68
- "test/test_helper.rb",
69
- "test/test_yaml_config.rb",
70
- "website/index.html",
71
- "website/javascripts/rounded_corners_lite.inc.js",
72
- "website/stylesheets/screen.css",
73
- "website/template.html.erb"
74
- ]
12
+ s.extra_rdoc_files = [ "README.txt" ]
75
13
  s.homepage = %q{http://ehcache.rubyforge.org}
76
- s.require_paths = [%q{lib}]
77
14
  s.rubyforge_project = %q{ehcache}
78
15
  s.rubygems_version = %q{1.8.9}
79
16
  s.summary = %q{JRuby interface to Ehcache}
80
17
 
81
- if s.respond_to? :specification_version then
82
- s.specification_version = 3
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
83
22
 
84
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
85
- s.add_runtime_dependency(%q<jruby-ehcache>, [">= 0"])
86
- s.add_development_dependency(%q<rake>, [">= 0"])
87
- s.add_development_dependency(%q<jeweler>, [">= 0"])
88
- s.add_development_dependency(%q<rake>, [">= 0"])
89
- s.add_development_dependency(%q<jeweler>, [">= 0"])
90
- s.add_runtime_dependency(%q<activesupport>, [">= 0"])
91
- s.add_runtime_dependency(%q<i18n>, [">= 0"])
92
- s.add_development_dependency(%q<rake>, [">= 0"])
93
- s.add_development_dependency(%q<jeweler>, [">= 0"])
94
- else
95
- s.add_dependency(%q<jruby-ehcache>, [">= 0"])
96
- s.add_dependency(%q<rake>, [">= 0"])
97
- s.add_dependency(%q<jeweler>, [">= 0"])
98
- s.add_dependency(%q<rake>, [">= 0"])
99
- s.add_dependency(%q<jeweler>, [">= 0"])
100
- s.add_dependency(%q<activesupport>, [">= 0"])
101
- s.add_dependency(%q<i18n>, [">= 0"])
102
- s.add_dependency(%q<rake>, [">= 0"])
103
- s.add_dependency(%q<jeweler>, [">= 0"])
104
- end
105
- else
106
- s.add_dependency(%q<jruby-ehcache>, [">= 0"])
107
- s.add_dependency(%q<rake>, [">= 0"])
108
- s.add_dependency(%q<jeweler>, [">= 0"])
109
- s.add_dependency(%q<rake>, [">= 0"])
110
- s.add_dependency(%q<jeweler>, [">= 0"])
111
- s.add_dependency(%q<activesupport>, [">= 0"])
112
- s.add_dependency(%q<i18n>, [">= 0"])
113
- s.add_dependency(%q<rake>, [">= 0"])
114
- s.add_dependency(%q<jeweler>, [">= 0"])
115
- end
23
+ s.add_runtime_dependency "i18n"
116
24
  end
117
-
@@ -0,0 +1,66 @@
1
+ require 'ehcache/active_support_store'
2
+
3
+ # Rails 3 cache store implementation which stores data in Ehcache:
4
+ # http://www.ehcache.org/
5
+
6
+ module ActiveSupport
7
+ module Cache
8
+ class EhcacheStore < Ehcache::ActiveSupportStore
9
+
10
+ def initialize(*args)
11
+ args = args.flatten
12
+ options = args.extract_options!
13
+ super(options)
14
+ self.create_cache_manager(options)
15
+ @ehcache = self.create_cache(options)
16
+ extend Strategy::LocalCache
17
+ end
18
+
19
+ def increment(name, amount = 1, options = nil) # :nodoc:
20
+ @ehcache.compare_and_swap(name) { |current_value|
21
+ current_value + amount
22
+ }
23
+ end
24
+
25
+ def decrement(name, amount = 1, options = nil) # :nodoc:
26
+ @ehcache.compare_and_swap(name) { |current_value|
27
+ current_value - amount
28
+ }
29
+ end
30
+
31
+ def clear(options = nil)
32
+ @ehcache.remove_all
33
+ end
34
+
35
+ def stats
36
+ @ehcache.statistics
37
+ end
38
+
39
+ protected
40
+ # Read an entry from the cache.
41
+ def read_entry(key, options) # :nodoc:
42
+ @ehcache[key]
43
+ rescue Ehcache::EhcacheError => e
44
+ logger.error("EhcacheError (#{e}): #{e.message}")
45
+ false
46
+ end
47
+
48
+ # Write an entry to the cache.
49
+ def write_entry(key, entry, options) # :nodoc:
50
+ @ehcache.put(key, entry, options)
51
+ true
52
+ rescue Ehcache::EhcacheError => e
53
+ logger.error("EhcacheError (#{e}): #{e.message}")
54
+ false
55
+ end
56
+
57
+ # Delete an entry from the cache.
58
+ def delete_entry(key, options) # :nodoc:
59
+ @ehcache.remove(key)
60
+ rescue Exception => e
61
+ logger.error("EhcacheError (#{e}): #{e.message}")
62
+ false
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,59 @@
1
+ require 'ehcache/active_support_store'
2
+
3
+ # Rails 2 cache store implementation which stores data in Ehcache:
4
+ # http://www.ehcache.org/
5
+
6
+ module ActiveSupport
7
+ module Cache
8
+ class EhcacheStore < Ehcache::ActiveSupportStore
9
+
10
+ def initialize(options = {})
11
+ super() # Rails 2.3.x Store doesn't take any arguments to initialize
12
+ @ehcache = self.create_cache
13
+ end
14
+
15
+ def read(key, options = nil)
16
+ @ehcache[key]
17
+ rescue Ehcache::EhcacheError => e
18
+ logger.error("EhcacheError (#{e}): #{e.message}")
19
+ false
20
+ end
21
+
22
+ def write(key, value, options = {})
23
+ @ehcache.put(key, value, options)
24
+ true
25
+ rescue Ehcache::EhcacheError => e
26
+ logger.error("EhcacheError (#{e}): #{e.message}")
27
+ false
28
+ end
29
+
30
+ def delete(key, options = nil)
31
+ @ehcache.remove(key)
32
+ rescue Exception => e
33
+ logger.error("EhcacheError (#{e}): #{e.message}")
34
+ false
35
+ end
36
+
37
+ def keys
38
+ @ehcache.keys
39
+ end
40
+
41
+ def exist?(key, options = nil)
42
+ @ehcache.exist?(key)
43
+ end
44
+
45
+ def delete_matched(matcher, options = nil)
46
+ super
47
+ raise "Not supported by Ehcache"
48
+ end
49
+
50
+ def clear
51
+ @ehcache.clear
52
+ true
53
+ rescue Exception => e
54
+ logger.error("EhcacheError (#{e}): #{e.message}")
55
+ false
56
+ end
57
+ end
58
+ end
59
+ end
@@ -20,30 +20,3 @@ require 'ehcache/config'
20
20
  require 'ehcache/cache'
21
21
  require 'ehcache/cache_manager'
22
22
  require 'ehcache/element'
23
-
24
- if defined?(Rails)
25
- require 'ehcache/active_support_store'
26
-
27
- case Rails::VERSION::MAJOR
28
- when 2
29
- require 'active_support/ehcache_store' # AS 2 impl
30
-
31
- ActiveSupport::Cache::EhcacheStore.config_directory = File.expand_path(File.join(RAILS_ROOT, 'config'))
32
- ActiveSupport::Cache::EhcacheStore.default_cache_name = 'rails_cache'
33
-
34
- when 3
35
- require 'active_support/cache/ehcache_store' # AS 3 impl
36
-
37
- # Railtie
38
- module Ehcache
39
- class Railtie < ::Rails::Railtie
40
- initializer "ehcache.setup_paths" do
41
- ActiveSupport::Cache::EhcacheStore.config_directory = File.expand_path(File.join(::Rails.root, 'config'))
42
- ActiveSupport::Cache::EhcacheStore.default_cache_name = 'rails_cache'
43
- end
44
- end
45
- end
46
-
47
- end
48
-
49
- end
@@ -0,0 +1,58 @@
1
+ # Common code used in the ehcache_store implementations for ActiveSupport 2.x and 3.x
2
+ require 'active_support'
3
+
4
+ begin
5
+ require 'ehcache'
6
+ rescue LoadError => e
7
+ $stderr.puts "You don't have ehcache installed in your application."
8
+ $stderr.puts "Please add it to your Gemfile and run bundle install"
9
+ raise e
10
+ end
11
+
12
+ # Base class for both the ActiveSupport 2 & 3 implementations
13
+ module Ehcache
14
+ class ActiveSupportStore < ActiveSupport::Cache::Store
15
+
16
+ cattr_accessor :config_directory
17
+ cattr_accessor :default_cache_name
18
+
19
+ attr_reader :cache_manager
20
+
21
+ def create_cache_manager(options = {})
22
+ config_dir = self.class.config_directory
23
+ config = if options[:ehcache_config]
24
+ File.expand_path(File.join(config_dir, options[:ehcache_config]))
25
+ else
26
+ Ehcache::Config::Configuration.find(config_dir) if config_dir
27
+ end
28
+ # Ehcache will use the failsafe configuration if nothing is passed in
29
+ # Note: .create is a factory method
30
+ @cache_manager = Ehcache::CacheManager.create(config)
31
+ end
32
+
33
+ def create_cache(options = {})
34
+ create_cache_manager(options) if @cache_manager.nil?
35
+ @cache_manager.cache(options[:cache_name] || default_cache_name)
36
+ end
37
+
38
+ def default_cache_name
39
+ self.class.default_cache_name || 'app_cache'
40
+ end
41
+
42
+ at_exit do
43
+ @cache_manager.shutdown if @cache_manager
44
+ end
45
+
46
+ end
47
+ end
48
+
49
+ if defined?(Rails)
50
+ Ehcache::ActiveSupportStore.default_cache_name = 'rails_cache'
51
+
52
+ case Rails::VERSION::MAJOR
53
+ when 2
54
+ Ehcache::ActiveSupportStore.config_directory = File.expand_path(File.join(RAILS_ROOT, 'config'))
55
+ when 3
56
+ Ehcache::ActiveSupportStore.config_directory = File.expand_path(File.join(::Rails.root, 'config'))
57
+ end
58
+ end
@@ -10,6 +10,13 @@ class Java::NetSfEhcache::Cache
10
10
  yield self.get(key)
11
11
  end
12
12
  end
13
+
14
+ # Does this cache require marshalling of Ruby objects?
15
+ def marshal?
16
+ config = self.cache_configuration
17
+ config.overflow_to_disk? || config.overflow_to_off_heap? || config.terracotta_clustered?
18
+ end
19
+
13
20
  # Gets an element value from the cache. Unlike the #get method, this method
14
21
  # returns the element value, not the Element object.
15
22
  def [](key)
@@ -26,7 +33,10 @@ class Java::NetSfEhcache::Cache
26
33
  if args.size == 1 && args.first.kind_of?(Ehcache::Element)
27
34
  element = args.first
28
35
  elsif args.size == 2
29
- element = Ehcache::Element.create(args[0], args[1], options)
36
+ if marshal?
37
+ value = Java::NetSfEhcache::MarshaledRubyObject.new(Marshal.dump(args[1]).to_java_bytes)
38
+ end
39
+ element = Ehcache::Element.create(args[0], value, options)
30
40
  else
31
41
  raise ArgumentError, "Must be Element object or key and value arguments"
32
42
  end
@@ -9,6 +9,18 @@ class Java::NetSfEhcache::Element
9
9
  result
10
10
  end
11
11
 
12
+ alias element_value value
13
+
14
+ # Wrap the Element#value method to unmarshal Ruby objects if necessary.
15
+ def value
16
+ val = element_value
17
+ if val.kind_of?(Java::NetSfEhcache::MarshaledRubyObject)
18
+ Marshal.load(String.from_java_bytes(val.bytes))
19
+ else
20
+ val
21
+ end
22
+ end
23
+
12
24
  alias tti getTimeToIdle
13
25
  alias ttl getTimeToLive
14
26
 
@@ -0,0 +1,3 @@
1
+ module Ehcache
2
+ VERSION = "1.2.1"
3
+ end
@@ -0,0 +1,15 @@
1
+ package net.sf.ehcache;
2
+
3
+ import java.io.Serializable;
4
+
5
+ public class MarshaledRubyObject implements Serializable {
6
+ private byte[] bytes;
7
+
8
+ public MarshaledRubyObject(byte[] bytes) {
9
+ this.bytes = bytes;
10
+ }
11
+
12
+ public byte[] getBytes() {
13
+ return this.bytes;
14
+ }
15
+ }
metadata CHANGED
@@ -1,230 +1,133 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: jruby-ehcache
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.1
4
5
  prerelease:
5
- version: 1.2.0
6
6
  platform: ruby
7
- authors:
8
- - Dylan Stamat
9
- - Jason Voegele
7
+ authors:
8
+ - Dylan Stamat
9
+ - Jason Voegele
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
-
14
- date: 2012-03-14 00:00:00 Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: jruby-ehcache
18
- version_requirements: &id001 !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- requirement: *id001
25
- prerelease: false
26
- type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: rake
29
- version_requirements: &id002 !ruby/object:Gem::Requirement
30
- none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
35
- requirement: *id002
36
- prerelease: false
37
- type: :development
38
- - !ruby/object:Gem::Dependency
39
- name: jeweler
40
- version_requirements: &id003 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
46
- requirement: *id003
47
- prerelease: false
48
- type: :development
49
- - !ruby/object:Gem::Dependency
50
- name: rake
51
- version_requirements: &id004 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
57
- requirement: *id004
58
- prerelease: false
59
- type: :development
60
- - !ruby/object:Gem::Dependency
61
- name: jeweler
62
- version_requirements: &id005 !ruby/object:Gem::Requirement
63
- none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
68
- requirement: *id005
69
- prerelease: false
70
- type: :development
71
- - !ruby/object:Gem::Dependency
72
- name: rake
73
- version_requirements: &id006 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
79
- requirement: *id006
80
- prerelease: false
81
- type: :development
82
- - !ruby/object:Gem::Dependency
83
- name: jeweler
84
- version_requirements: &id007 !ruby/object:Gem::Requirement
85
- none: false
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: "0"
90
- requirement: *id007
91
- prerelease: false
92
- type: :development
93
- - !ruby/object:Gem::Dependency
94
- name: activesupport
95
- version_requirements: &id008 !ruby/object:Gem::Requirement
96
- none: false
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
101
- requirement: *id008
102
- prerelease: false
103
- type: :runtime
104
- - !ruby/object:Gem::Dependency
105
- name: i18n
106
- version_requirements: &id009 !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: "0"
112
- requirement: *id009
113
- prerelease: false
114
- type: :runtime
115
- - !ruby/object:Gem::Dependency
116
- name: rake
117
- version_requirements: &id010 !ruby/object:Gem::Requirement
118
- none: false
119
- requirements:
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: "0"
123
- requirement: *id010
124
- prerelease: false
125
- type: :development
126
- - !ruby/object:Gem::Dependency
127
- name: jeweler
128
- version_requirements: &id011 !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: "0"
134
- requirement: *id011
135
- prerelease: false
136
- type: :development
13
+ date: 2012-03-14 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: i18n
17
+ requirement: &70252855820620 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *70252855820620
137
26
  description: JRuby interface to the popular Java caching library Ehcache
138
- email:
139
- - dstamat@elctech.com
140
- - jvoegele@terracotta.org
141
- executables:
142
- - ehcache
27
+ email:
28
+ - dstamat@elctech.com
29
+ - jvoegele@terracotta.org
30
+ executables:
31
+ - ehcache
143
32
  extensions: []
144
-
145
- extra_rdoc_files:
146
- - README.txt
147
- files:
148
- - Gemfile
149
- - Gemfile.lock
150
- - History.txt
151
- - License.txt
152
- - Manifest.txt
153
- - PostInstall.txt
154
- - README.txt
155
- - Rakefile
156
- - VERSION
157
- - bin/ehcache
158
- - config/ehcache.yml
159
- - config/ehcache_manual_rmi.yml
160
- - examples/ehcache.xml
161
- - examples/jruby-ehcache.rb
162
- - ext/ehcache-2.4.6/ehcache-core-2.4.6.jar
163
- - ext/ehcache-2.4.6/ehcache-terracotta-2.4.6.jar
164
- - ext/ehcache-2.4.6/slf4j-api-1.6.1.jar
165
- - ext/ehcache-2.4.6/slf4j-jdk14-1.6.1.jar
166
- - ext/ehcache-2.4.6/terracotta-toolkit-1.3-runtime-3.3.0.jar
167
- - jruby-ehcache-rails2.gemspec
168
- - jruby-ehcache-rails3.gemspec
169
- - jruby-ehcache.gemspec
170
- - lib/ehcache.rb
171
- - lib/ehcache/cache.rb
172
- - lib/ehcache/cache_manager.rb
173
- - lib/ehcache/config.rb
174
- - lib/ehcache/element.rb
175
- - lib/ehcache/extensions.rb
176
- - lib/ehcache/java.rb
177
- - lib/ehcache/yaml_config.rb
178
- - script/console
179
- - script/destroy
180
- - script/generate
181
- - script/txt2html
182
- - spec/cache_manager_spec.rb
183
- - spec/cache_spec.rb
184
- - spec/spec.opts
185
- - spec/spec_helper.rb
186
- - tasks/deployment.rake
187
- - tasks/environment.rake
188
- - tasks/website.rake
189
- - test/ehcache.xml
190
- - test/ehcache.yml
191
- - test/test_cache.rb
192
- - test/test_cache_manager.rb
193
- - test/test_configuration.rb
194
- - test/test_ehcache.rb
195
- - test/test_element.rb
196
- - test/test_helper.rb
197
- - test/test_yaml_config.rb
198
- - website/index.html
199
- - website/javascripts/rounded_corners_lite.inc.js
200
- - website/stylesheets/screen.css
201
- - website/template.html.erb
33
+ extra_rdoc_files:
34
+ - README.txt
35
+ files:
36
+ - .gitignore
37
+ - Gemfile
38
+ - Gemfile.lock
39
+ - History.txt
40
+ - License.txt
41
+ - Manifest.txt
42
+ - PostInstall.txt
43
+ - README.txt
44
+ - Rakefile
45
+ - VERSION
46
+ - bin/ehcache
47
+ - config/ehcache.yml
48
+ - config/ehcache_manual_rmi.yml
49
+ - examples/ehcache.xml
50
+ - examples/jruby-ehcache.rb
51
+ - ext/ehcache-2.4.6/ehcache-core-2.4.6.jar
52
+ - ext/ehcache-2.4.6/ehcache-terracotta-2.4.6.jar
53
+ - ext/ehcache-2.4.6/slf4j-api-1.6.1.jar
54
+ - ext/ehcache-2.4.6/slf4j-jdk14-1.6.1.jar
55
+ - ext/ehcache-2.4.6/terracotta-toolkit-1.3-runtime-3.3.0.jar
56
+ - ext/marshaled-ruby-object.jar
57
+ - jruby-ehcache-rails2.gemspec
58
+ - jruby-ehcache-rails3.gemspec
59
+ - jruby-ehcache.gemspec
60
+ - lib/active_support/cache/ehcache_store.rb
61
+ - lib/active_support/ehcache_store.rb
62
+ - lib/ehcache.rb
63
+ - lib/ehcache/active_support_store.rb
64
+ - lib/ehcache/cache.rb
65
+ - lib/ehcache/cache_manager.rb
66
+ - lib/ehcache/config.rb
67
+ - lib/ehcache/element.rb
68
+ - lib/ehcache/java.rb
69
+ - lib/ehcache/version.rb
70
+ - lib/ehcache/yaml_config.rb
71
+ - script/console
72
+ - script/destroy
73
+ - script/generate
74
+ - script/txt2html
75
+ - spec/cache_manager_spec.rb
76
+ - spec/cache_spec.rb
77
+ - spec/spec.opts
78
+ - spec/spec_helper.rb
79
+ - src/net/sf/ehcache/MarshaledRubyObject.java
80
+ - tasks/deployment.rake
81
+ - tasks/environment.rake
82
+ - tasks/website.rake
83
+ - test/ehcache.xml
84
+ - test/ehcache.yml
85
+ - test/test_cache.rb
86
+ - test/test_cache_manager.rb
87
+ - test/test_configuration.rb
88
+ - test/test_ehcache.rb
89
+ - test/test_element.rb
90
+ - test/test_helper.rb
91
+ - test/test_yaml_config.rb
92
+ - website/index.html
93
+ - website/javascripts/rounded_corners_lite.inc.js
94
+ - website/stylesheets/screen.css
95
+ - website/template.html.erb
202
96
  homepage: http://ehcache.rubyforge.org
203
97
  licenses: []
204
-
205
98
  post_install_message:
206
99
  rdoc_options: []
207
-
208
- require_paths:
209
- - lib
210
- required_ruby_version: !ruby/object:Gem::Requirement
100
+ require_paths:
101
+ - lib
102
+ required_ruby_version: !ruby/object:Gem::Requirement
211
103
  none: false
212
- requirements:
213
- - - ">="
214
- - !ruby/object:Gem::Version
215
- version: "0"
216
- required_rubygems_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ! '>='
106
+ - !ruby/object:Gem::Version
107
+ version: '0'
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
217
109
  none: false
218
- requirements:
219
- - - ">="
220
- - !ruby/object:Gem::Version
221
- version: "0"
110
+ requirements:
111
+ - - ! '>='
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
222
114
  requirements: []
223
-
224
115
  rubyforge_project: ehcache
225
- rubygems_version: 1.8.9
116
+ rubygems_version: 1.8.15
226
117
  signing_key:
227
118
  specification_version: 3
228
119
  summary: JRuby interface to Ehcache
229
- test_files: []
230
-
120
+ test_files:
121
+ - spec/cache_manager_spec.rb
122
+ - spec/cache_spec.rb
123
+ - spec/spec.opts
124
+ - spec/spec_helper.rb
125
+ - test/ehcache.xml
126
+ - test/ehcache.yml
127
+ - test/test_cache.rb
128
+ - test/test_cache_manager.rb
129
+ - test/test_configuration.rb
130
+ - test/test_ehcache.rb
131
+ - test/test_element.rb
132
+ - test/test_helper.rb
133
+ - test/test_yaml_config.rb
@@ -1,31 +0,0 @@
1
- require 'active_support/core_ext/string/inflections'
2
- require 'active_support/core_ext/array/extract_options'
3
-
4
- class Hash
5
- # Merges self with another hash, recursively.
6
- # This code was lovingly stolen from some random gem:
7
- # http://gemjack.com/gems/tartan-0.1.1/classes/Hash.html
8
- # Thanks to whoever made it.
9
- def deep_merge(hash)
10
- target = dup
11
-
12
- hash.keys.each do |key|
13
- if hash[key].is_a? Hash and self[key].is_a? Hash
14
- target[key] = target[key].deep_merge(hash[key])
15
- next
16
- end
17
- target[key] = hash[key]
18
- end
19
- target
20
- end
21
-
22
- def deep_merge!(second)
23
- second.each_pair do |k,v|
24
- if self[k].is_a?(Hash) and second[k].is_a?(Hash)
25
- self[k].deep_merge!(second[k])
26
- else
27
- self[k] = second[k]
28
- end
29
- end
30
- end
31
- end