[DRE-commits] [SCM] ruby-moneta.git branch, master, updated. debian/0.6.0-4-16-g741fce5
Jérémy Bobbio
lunar at debian.org
Wed Mar 27 15:23:40 UTC 2013
The following commit has been merged in the master branch:
commit 018fcb9cf9acb72b2f8a8783e5dc62e7bce3acdb
Author: Jérémy Bobbio <lunar at debian.org>
Date: Tue Mar 26 19:35:41 2013 +0100
Add enough patches to get the test suite to pass
* Skip the 'concurrent increment' example as its too unreliable.
* Skip the specs which needs a dependency missing in Debian.
* Skip specs that needs 'action_dispatch', also missing in Debian.
diff --git a/debian/patches/0002-Mark-concurrent-increment-example-as-pending.patch b/debian/patches/0002-Mark-concurrent-increment-example-as-pending.patch
new file mode 100644
index 0000000..a5956ca
--- /dev/null
+++ b/debian/patches/0002-Mark-concurrent-increment-example-as-pending.patch
@@ -0,0 +1,22 @@
+From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Bobbio?= <lunar at debian.org>
+Date: Tue, 26 Mar 2013 19:35:27 +0100
+Subject: Mark 'concurrent increment' example as pending
+
+It is not reliable enough to be trusted for now.
+---
+ script/generate-specs | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/script/generate-specs b/script/generate-specs
+index c892797..ac1cbf0 100755
+--- a/script/generate-specs
++++ b/script/generate-specs
+@@ -2022,6 +2022,8 @@ SPECS['concurrent_increment'] = %{def increment_thread(name)
+ end
+
+ it 'have atomic increment across multiple processes' do
++ pending "a more reliable implementation suitable for Debian packaging"
++
+ a = increment_thread('a')
+ b = increment_thread('b')
+ c = increment_thread('c')
diff --git a/debian/patches/0003-Skip-specs-for-which-we-miss-a-dependency.patch b/debian/patches/0003-Skip-specs-for-which-we-miss-a-dependency.patch
new file mode 100644
index 0000000..9d65eb0
--- /dev/null
+++ b/debian/patches/0003-Skip-specs-for-which-we-miss-a-dependency.patch
@@ -0,0 +1,90 @@
+From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Bobbio?= <lunar at debian.org>
+Date: Wed, 27 Mar 2013 08:23:12 +0000
+Subject: Skip specs for which we miss a dependency
+
+---
+ script/generate-specs | 66 ++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 65 insertions(+), 1 deletion(-)
+
+diff --git a/script/generate-specs b/script/generate-specs
+index ac1cbf0..042ef8d 100755
+--- a/script/generate-specs
++++ b/script/generate-specs
+@@ -2357,6 +2357,70 @@ end
+ specs_code.gsub!(/\n +\n/, "\n\n")
+ File.open(File.join(PATH, 'monetaspecs.rb'), 'w') {|out| out << specs_code }
+
++SKIP = %w{
++adapter_activerecord
++adapter_activerecord_exisiting_connection
++adapter_couch
++adapter_datamapper
++adapter_daybreak
++adapter_hbase
++adapter_leveldb
++adapter_localmemcache
++adapter_memcached
++adapter_memcached_dalli
++adapter_memcached_dalli_with_default_expires
++adapter_memcached_native
++adapter_memcached_native_with_default_expires
++adapter_memcached_with_default_expires
++adapter_mongo
++adapter_mongo_with_default_expires
++adapter_redis
++adapter_redis_with_default_expires
++adapter_restclient
++adapter_tdb
++adapter_tokyotyrant
++proxy_redis
++simple_activerecord
++simple_activerecord_with_expires
++simple_couch
++simple_couch_with_expires
++simple_datamapper
++simple_datamapper_with_expires
++simple_datamapper_with_repository
++simple_daybreak
++simple_daybreak_with_expires
++simple_hbase
++simple_hbase_with_expires
++simple_leveldb
++simple_leveldb_with_expires
++simple_localmemcache
++simple_localmemcache_with_expires
++simple_memcached
++simple_memcached_dalli
++simple_memcached_native
++simple_memory_with_snappy_compress
++simple_mongo
++simple_redis
++simple_restclient
++simple_tdb
++simple_tdb_with_expires
++simple_tokyotyrant
++simple_tokyotyrant_with_expires
++transformer_bencode
++transformer_bert
++transformer_bson
++transformer_bzip2
++transformer_lzma
++transformer_lzo
++transformer_msgpack
++transformer_ox
++transformer_quicklz
++transformer_snappy
++transformer_tnet
++weak_create
++weak_increment
++}
++
+ TESTS.each do |name, options|
+ build = options.delete(:build)
+ store = options.delete(:store)
+@@ -2402,5 +2466,5 @@ end
+ }
+
+ code.gsub!(/\n +\n/, "\n\n")
+- File.open(File.join(PATH, 'moneta', "#{name}_spec.rb"), 'w') {|out| out << code }
++ File.open(File.join(PATH, 'moneta', "#{name}_spec.rb"), 'w') {|out| out << code unless SKIP.include?(name) }
+ end
diff --git a/debian/patches/0099-Re-generate-specs-using-script-generate-specs.patch b/debian/patches/0099-Re-generate-specs-using-script-generate-specs.patch
index f1908e5..e6bcda6 100644
--- a/debian/patches/0099-Re-generate-specs-using-script-generate-specs.patch
+++ b/debian/patches/0099-Re-generate-specs-using-script-generate-specs.patch
@@ -3,106 +3,802 @@ Date: Mon, 25 Mar 2013 17:59:16 +0000
Subject: Re-generate specs using script/generate-specs
---
- .../moneta/adapter_activerecord_exisiting_connection_spec.rb | 2 +-
- spec/moneta/adapter_activerecord_spec.rb | 10 +++++-----
- spec/moneta/adapter_datamapper_spec.rb | 10 +++++-----
- spec/moneta/adapter_sequel_spec.rb | 2 +-
- spec/moneta/simple_activerecord_spec.rb | 2 +-
- spec/moneta/simple_activerecord_with_expires_spec.rb | 2 +-
- spec/moneta/simple_datamapper_spec.rb | 2 +-
- spec/moneta/simple_datamapper_with_expires_spec.rb | 2 +-
- spec/moneta/simple_datamapper_with_repository_spec.rb | 2 +-
- spec/moneta/simple_sequel_spec.rb | 2 +-
- spec/moneta/simple_sequel_with_expires_spec.rb | 2 +-
- 11 files changed, 19 insertions(+), 19 deletions(-)
+ ...apter_activerecord_exisiting_connection_spec.rb | 31 ----
+ spec/moneta/adapter_activerecord_spec.rb | 61 --------
+ spec/moneta/adapter_couch_spec.rb | 27 ----
+ spec/moneta/adapter_datamapper_spec.rb | 59 --------
+ spec/moneta/adapter_daybreak_spec.rb | 26 ----
+ spec/moneta/adapter_hbase_spec.rb | 28 ----
+ spec/moneta/adapter_leveldb_spec.rb | 26 ----
+ spec/moneta/adapter_localmemcache_spec.rb | 27 ----
+ spec/moneta/adapter_memcached_dalli_spec.rb | 31 ----
+ ...er_memcached_dalli_with_default_expires_spec.rb | 32 ----
+ spec/moneta/adapter_memcached_native_spec.rb | 31 ----
+ ...r_memcached_native_with_default_expires_spec.rb | 32 ----
+ spec/moneta/adapter_memcached_spec.rb | 31 ----
+ .../adapter_memcached_with_default_expires_spec.rb | 32 ----
+ spec/moneta/adapter_mongo_spec.rb | 37 -----
+ .../adapter_mongo_with_default_expires_spec.rb | 32 ----
+ spec/moneta/adapter_redis_spec.rb | 31 ----
+ .../adapter_redis_with_default_expires_spec.rb | 32 ----
+ spec/moneta/adapter_restclient_spec.rb | 28 ----
+ spec/moneta/adapter_sequel_spec.rb | 2 +-
+ spec/moneta/adapter_tdb_spec.rb | 26 ----
+ spec/moneta/adapter_tokyotyrant_spec.rb | 29 ----
+ spec/moneta/proxy_redis_spec.rb | 35 -----
+ spec/moneta/simple_activerecord_spec.rb | 154 -------------------
+ .../simple_activerecord_with_expires_spec.rb | 156 -------------------
+ spec/moneta/simple_couch_spec.rb | 152 -------------------
+ spec/moneta/simple_couch_with_expires_spec.rb | 153 -------------------
+ spec/moneta/simple_datamapper_spec.rb | 155 -------------------
+ spec/moneta/simple_datamapper_with_expires_spec.rb | 157 --------------------
+ .../simple_datamapper_with_repository_spec.rb | 155 -------------------
+ spec/moneta/simple_daybreak_spec.rb | 151 -------------------
+ spec/moneta/simple_daybreak_with_expires_spec.rb | 153 -------------------
+ spec/moneta/simple_hbase_spec.rb | 153 -------------------
+ spec/moneta/simple_hbase_with_expires_spec.rb | 156 -------------------
+ spec/moneta/simple_leveldb_spec.rb | 151 -------------------
+ spec/moneta/simple_leveldb_with_expires_spec.rb | 153 -------------------
+ spec/moneta/simple_localmemcache_spec.rb | 152 -------------------
+ .../simple_localmemcache_with_expires_spec.rb | 153 -------------------
+ spec/moneta/simple_memcached_dalli_spec.rb | 156 -------------------
+ spec/moneta/simple_memcached_native_spec.rb | 156 -------------------
+ spec/moneta/simple_memcached_spec.rb | 156 -------------------
+ .../simple_memory_with_snappy_compress_spec.rb | 116 ---------------
+ spec/moneta/simple_mongo_spec.rb | 156 -------------------
+ spec/moneta/simple_redis_spec.rb | 156 -------------------
+ spec/moneta/simple_restclient_spec.rb | 153 -------------------
+ spec/moneta/simple_sequel_spec.rb | 2 +-
+ spec/moneta/simple_sequel_with_expires_spec.rb | 2 +-
+ spec/moneta/simple_tdb_spec.rb | 151 -------------------
+ spec/moneta/simple_tdb_with_expires_spec.rb | 153 -------------------
+ spec/moneta/simple_tokyotyrant_spec.rb | 154 -------------------
+ .../moneta/simple_tokyotyrant_with_expires_spec.rb | 156 -------------------
+ spec/moneta/transformer_bencode_spec.rb | 54 -------
+ spec/moneta/transformer_bert_spec.rb | 54 -------
+ spec/moneta/transformer_bson_spec.rb | 54 -------
+ spec/moneta/transformer_bzip2_spec.rb | 48 ------
+ spec/moneta/transformer_lzma_spec.rb | 48 ------
+ spec/moneta/transformer_lzo_spec.rb | 48 ------
+ spec/moneta/transformer_msgpack_spec.rb | 54 -------
+ spec/moneta/transformer_ox_spec.rb | 120 ---------------
+ spec/moneta/transformer_quicklz_spec.rb | 48 ------
+ spec/moneta/transformer_snappy_spec.rb | 48 ------
+ spec/moneta/transformer_tnet_spec.rb | 54 -------
+ spec/moneta/weak_create_spec.rb | 30 ----
+ spec/moneta/weak_increment_spec.rb | 30 ----
+ spec/monetaspecs.rb | 2 +
+ 65 files changed, 5 insertions(+), 5384 deletions(-)
diff --git a/spec/moneta/adapter_activerecord_exisiting_connection_spec.rb b/spec/moneta/adapter_activerecord_exisiting_connection_spec.rb
-index c3b3ddf..4f60067 100644
+index c3b3ddf..e69de29 100644
--- a/spec/moneta/adapter_activerecord_exisiting_connection_spec.rb
+++ b/spec/moneta/adapter_activerecord_exisiting_connection_spec.rb
-@@ -3,7 +3,7 @@ require 'helper'
-
- describe_moneta "adapter_activerecord_exisiting_connection" do
- require 'active_record'
+@@ -1,31 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_activerecord_exisiting_connection" do
+- require 'active_record'
- ActiveRecord::Base.establish_connection :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root'
-+ ActiveRecord::Base.establish_connection :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET']
- def features
- [:create, :increment]
- end
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord_existing_connection')
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
diff --git a/spec/moneta/adapter_activerecord_spec.rb b/spec/moneta/adapter_activerecord_spec.rb
-index e105094..a92f8aa 100644
+index e105094..e69de29 100644
--- a/spec/moneta/adapter_activerecord_spec.rb
+++ b/spec/moneta/adapter_activerecord_spec.rb
-@@ -7,7 +7,7 @@ describe_moneta "adapter_activerecord" do
- end
-
- def new_store
+@@ -1,61 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_activerecord" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
- Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root' })
-+ Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET'] })
- end
-
- def load_value(value)
-@@ -34,8 +34,8 @@ describe_moneta "adapter_activerecord" do
- end
-
- it 'supports different tables same database' do
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it 'updates an existing key/value' do
+- store['foo/bar'] = '1'
+- store['foo/bar'] = '2'
+- records = store.table.find :all, :conditions => { :k => 'foo/bar' }
+- records.count.should == 1
+- end
+-
+- it 'supports different tables same database' do
- store1 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord1', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root' })
- store2 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord2', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root' })
-+ store1 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord1', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET'] })
-+ store2 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord2', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET'] })
-
- store1['key'] = 'value1'
- store2['key'] = 'value2'
-@@ -47,8 +47,8 @@ describe_moneta "adapter_activerecord" do
- end
-
- it 'supports different databases same table' do
+-
+- store1['key'] = 'value1'
+- store2['key'] = 'value2'
+- store1['key'].should == 'value1'
+- store2['key'].should == 'value2'
+-
+- store1.close
+- store2.close
+- end
+-
+- it 'supports different databases same table' do
- store1 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta_activerecord1', :username => 'root' })
- store2 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta_activerecord2', :username => 'root' })
-+ store1 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta_activerecord1', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET'] })
-+ store2 = Moneta::Adapters::ActiveRecord.new(:table => 'adapter_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta_activerecord2', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET'] })
-
- store1['key'] = 'value1'
- store2['key'] = 'value2'
+-
+- store1['key'] = 'value1'
+- store2['key'] = 'value2'
+- store1['key'].should == 'value1'
+- store2['key'].should == 'value2'
+-
+- store1.close
+- store2.close
+- end
+-end
+diff --git a/spec/moneta/adapter_couch_spec.rb b/spec/moneta/adapter_couch_spec.rb
+index b39ddf5..e69de29 100644
+--- a/spec/moneta/adapter_couch_spec.rb
++++ b/spec/moneta/adapter_couch_spec.rb
+@@ -1,27 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_couch" do
+- def features
+- []
+- end
+-
+- def new_store
+- Moneta::Adapters::Couch.new(:db => 'adapter_couch')
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'features'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
diff --git a/spec/moneta/adapter_datamapper_spec.rb b/spec/moneta/adapter_datamapper_spec.rb
-index afb6e2e..38a1a0d 100644
+index afb6e2e..e69de29 100644
--- a/spec/moneta/adapter_datamapper_spec.rb
+++ b/spec/moneta/adapter_datamapper_spec.rb
-@@ -9,7 +9,7 @@ describe_moneta "adapter_datamapper" do
- end
-
- def new_store
+@@ -1,59 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_datamapper" do
+- require 'dm-core'
+- DataMapper.setup(:default, :adapter => :in_memory)
+- def features
+- [:create]
+- end
+-
+- def new_store
- Moneta::Adapters::DataMapper.new(:setup => "mysql://root:@localhost/moneta", :table => "adapter_datamapper")
-+ Moneta::Adapters::DataMapper.new(:setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "adapter_datamapper")
- end
-
- def load_value(value)
-@@ -28,10 +28,10 @@ describe_moneta "adapter_datamapper" do
- it_should_behave_like 'store_stringkey_stringvalue'
- it_should_behave_like 'store_large'
- it 'does not cross contaminate when storing' do
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it 'does not cross contaminate when storing' do
- first = Moneta::Adapters::DataMapper.new(:setup => "mysql://root:@localhost/moneta", :table => "datamapper_first")
-+ first = Moneta::Adapters::DataMapper.new(:setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "datamapper_first")
- first.clear
-
+- first.clear
+-
- second = Moneta::Adapters::DataMapper.new(:repository => :sample, :setup => "mysql://root:@localhost/moneta", :table => "datamapper_second")
-+ second = Moneta::Adapters::DataMapper.new(:repository => :sample, :setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "datamapper_second")
- second.clear
-
- first['key'] = 'value'
-@@ -42,10 +42,10 @@ describe_moneta "adapter_datamapper" do
- end
-
- it 'does not cross contaminate when deleting' do
+- second.clear
+-
+- first['key'] = 'value'
+- second['key'] = 'value2'
+-
+- first['key'].should == 'value'
+- second['key'].should == 'value2'
+- end
+-
+- it 'does not cross contaminate when deleting' do
- first = Moneta::Adapters::DataMapper.new(:setup => "mysql://root:@localhost/moneta", :table => "datamapper_first")
-+ first = Moneta::Adapters::DataMapper.new(:setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "datamapper_first")
- first.clear
-
+- first.clear
+-
- second = Moneta::Adapters::DataMapper.new(:repository => :sample, :setup => "mysql://root:@localhost/moneta", :table => "datamapper_second")
-+ second = Moneta::Adapters::DataMapper.new(:repository => :sample, :setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "datamapper_second")
- second.clear
-
- first['key'] = 'value'
+- second.clear
+-
+- first['key'] = 'value'
+- second['key'] = 'value2'
+-
+- first.delete('key').should == 'value'
+- first.key?('key').should be_false
+- second['key'].should == 'value2'
+- end
+-
+-end
+diff --git a/spec/moneta/adapter_daybreak_spec.rb b/spec/moneta/adapter_daybreak_spec.rb
+index 11c8336..e69de29 100644
+--- a/spec/moneta/adapter_daybreak_spec.rb
++++ b/spec/moneta/adapter_daybreak_spec.rb
+@@ -1,26 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_daybreak" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::Daybreak.new(:file => File.join(make_tempdir, "adapter_daybreak"))
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returnsame_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_hbase_spec.rb b/spec/moneta/adapter_hbase_spec.rb
+index 5f113d9..e69de29 100644
+--- a/spec/moneta/adapter_hbase_spec.rb
++++ b/spec/moneta/adapter_hbase_spec.rb
+@@ -1,28 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_hbase" do
+- def features
+- [:increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::HBase.new(:table => 'adapter_hbase')
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_leveldb_spec.rb b/spec/moneta/adapter_leveldb_spec.rb
+index 86abb7e..e69de29 100644
+--- a/spec/moneta/adapter_leveldb_spec.rb
++++ b/spec/moneta/adapter_leveldb_spec.rb
+@@ -1,26 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_leveldb" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::LevelDB.new(:dir => File.join(make_tempdir, "adapter_leveldb"))
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_localmemcache_spec.rb b/spec/moneta/adapter_localmemcache_spec.rb
+index 4474d4c..e69de29 100644
+--- a/spec/moneta/adapter_localmemcache_spec.rb
++++ b/spec/moneta/adapter_localmemcache_spec.rb
+@@ -1,27 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_localmemcache" do
+- def features
+- []
+- end
+-
+- def new_store
+- Moneta::Adapters::LocalMemCache.new(:file => File.join(make_tempdir, "adapter_localmemcache"))
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'features'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_memcached_dalli_spec.rb b/spec/moneta/adapter_memcached_dalli_spec.rb
+index a98e405..e69de29 100644
+--- a/spec/moneta/adapter_memcached_dalli_spec.rb
++++ b/spec/moneta/adapter_memcached_dalli_spec.rb
+@@ -1,31 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_memcached_dalli" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::MemcachedDalli.new(:namespace => "adapter_memcached_dalli")
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_memcached_dalli_with_default_expires_spec.rb b/spec/moneta/adapter_memcached_dalli_with_default_expires_spec.rb
+index 2b12de3..e69de29 100644
+--- a/spec/moneta/adapter_memcached_dalli_with_default_expires_spec.rb
++++ b/spec/moneta/adapter_memcached_dalli_with_default_expires_spec.rb
+@@ -1,32 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_memcached_dalli_with_default_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::MemcachedDalli.new(:expires => 1)
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'default_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_memcached_native_spec.rb b/spec/moneta/adapter_memcached_native_spec.rb
+index f18b270..e69de29 100644
+--- a/spec/moneta/adapter_memcached_native_spec.rb
++++ b/spec/moneta/adapter_memcached_native_spec.rb
+@@ -1,31 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_memcached_native" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::MemcachedNative.new(:namespace => "adapter_memcached_native")
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_memcached_native_with_default_expires_spec.rb b/spec/moneta/adapter_memcached_native_with_default_expires_spec.rb
+index 4cc2d63..e69de29 100644
+--- a/spec/moneta/adapter_memcached_native_with_default_expires_spec.rb
++++ b/spec/moneta/adapter_memcached_native_with_default_expires_spec.rb
+@@ -1,32 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_memcached_native_with_default_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::MemcachedNative.new(:expires => 1)
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'default_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_memcached_spec.rb b/spec/moneta/adapter_memcached_spec.rb
+index ad34af5..e69de29 100644
+--- a/spec/moneta/adapter_memcached_spec.rb
++++ b/spec/moneta/adapter_memcached_spec.rb
+@@ -1,31 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_memcached" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::Memcached.new(:namespace => "adapter_memcached")
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_memcached_with_default_expires_spec.rb b/spec/moneta/adapter_memcached_with_default_expires_spec.rb
+index dc7b6c2..e69de29 100644
+--- a/spec/moneta/adapter_memcached_with_default_expires_spec.rb
++++ b/spec/moneta/adapter_memcached_with_default_expires_spec.rb
+@@ -1,32 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_memcached_with_default_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::Memcached.new(:expires => 1)
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'default_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_mongo_spec.rb b/spec/moneta/adapter_mongo_spec.rb
+index 5d07428..e69de29 100644
+--- a/spec/moneta/adapter_mongo_spec.rb
++++ b/spec/moneta/adapter_mongo_spec.rb
+@@ -1,37 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_mongo" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::Mongo.new(:db => "adapter_mongo")
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it 'automatically deletes expired document' do
+- store.store('key', 'val', :expires => 5)
+- store.instance_variable_get(:@collection).find_one('_id' => ::BSON::Binary.new('key')).should_not be_nil
+- sleep 70 # Mongo needs up to 60 seconds
+- store.instance_variable_get(:@collection).find_one('_id' => ::BSON::Binary.new('key')).should be_nil
+- end
+-end
+diff --git a/spec/moneta/adapter_mongo_with_default_expires_spec.rb b/spec/moneta/adapter_mongo_with_default_expires_spec.rb
+index 4f59468..e69de29 100644
+--- a/spec/moneta/adapter_mongo_with_default_expires_spec.rb
++++ b/spec/moneta/adapter_mongo_with_default_expires_spec.rb
+@@ -1,32 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_mongo_with_default_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::Mongo.new(:expires => 1)
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'default_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_redis_spec.rb b/spec/moneta/adapter_redis_spec.rb
+index 9ff1fdf..e69de29 100644
+--- a/spec/moneta/adapter_redis_spec.rb
++++ b/spec/moneta/adapter_redis_spec.rb
+@@ -1,31 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_redis" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::Redis.new
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_redis_with_default_expires_spec.rb b/spec/moneta/adapter_redis_with_default_expires_spec.rb
+index 8e543ef..e69de29 100644
+--- a/spec/moneta/adapter_redis_with_default_expires_spec.rb
++++ b/spec/moneta/adapter_redis_with_default_expires_spec.rb
+@@ -1,32 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_redis_with_default_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::Redis.new(:expires => 1)
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'default_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_restclient_spec.rb b/spec/moneta/adapter_restclient_spec.rb
+index de347d8..e69de29 100644
+--- a/spec/moneta/adapter_restclient_spec.rb
++++ b/spec/moneta/adapter_restclient_spec.rb
+@@ -1,28 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_restclient" do
+- start_restserver
+- def features
+- []
+- end
+-
+- def new_store
+- Moneta::Adapters::RestClient.new(:url => 'http://localhost:8808/moneta/')
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'features'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
diff --git a/spec/moneta/adapter_sequel_spec.rb b/spec/moneta/adapter_sequel_spec.rb
index 7e367b9..e1e2767 100644
--- a/spec/moneta/adapter_sequel_spec.rb
@@ -116,71 +812,3574 @@ index 7e367b9..e1e2767 100644
end
def load_value(value)
+diff --git a/spec/moneta/adapter_tdb_spec.rb b/spec/moneta/adapter_tdb_spec.rb
+index c8f69ff..e69de29 100644
+--- a/spec/moneta/adapter_tdb_spec.rb
++++ b/spec/moneta/adapter_tdb_spec.rb
+@@ -1,26 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_tdb" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::TDB.new(:file => File.join(make_tempdir, "adapter_tdb"))
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/adapter_tokyotyrant_spec.rb b/spec/moneta/adapter_tokyotyrant_spec.rb
+index 8a508d4..e69de29 100644
+--- a/spec/moneta/adapter_tokyotyrant_spec.rb
++++ b/spec/moneta/adapter_tokyotyrant_spec.rb
+@@ -1,29 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "adapter_tokyotyrant" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta::Adapters::TokyoTyrant.new
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/proxy_redis_spec.rb b/spec/moneta/proxy_redis_spec.rb
+index 443f8c0..e69de29 100644
+--- a/spec/moneta/proxy_redis_spec.rb
++++ b/spec/moneta/proxy_redis_spec.rb
+@@ -1,35 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "proxy_redis" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Proxy
+- use :Proxy
+- adapter :Redis
+- end
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
diff --git a/spec/moneta/simple_activerecord_spec.rb b/spec/moneta/simple_activerecord_spec.rb
-index cb19f70..1f758b8 100644
+index cb19f70..e69de29 100644
--- a/spec/moneta/simple_activerecord_spec.rb
+++ b/spec/moneta/simple_activerecord_spec.rb
-@@ -7,7 +7,7 @@ describe_moneta "simple_activerecord" do
- end
-
- def new_store
+@@ -1,154 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_activerecord" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
- Moneta.new(:ActiveRecord, :table => 'simple_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root' }, :logger => {:file => File.join(make_tempdir, 'simple_activerecord.log')})
-+ Moneta.new(:ActiveRecord, :table => 'simple_activerecord', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET'] }, :logger => {:file => File.join(make_tempdir, 'simple_activerecord.log')})
- end
-
- def load_value(value)
+- end
+-
+- def load_value(value)
+- ::Marshal.load(value.unpack('m').first)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
diff --git a/spec/moneta/simple_activerecord_with_expires_spec.rb b/spec/moneta/simple_activerecord_with_expires_spec.rb
-index c4e202c..ff0a014 100644
+index c4e202c..e69de29 100644
--- a/spec/moneta/simple_activerecord_with_expires_spec.rb
+++ b/spec/moneta/simple_activerecord_with_expires_spec.rb
-@@ -7,7 +7,7 @@ describe_moneta "simple_activerecord_with_expires" do
- end
-
- def new_store
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_activerecord_with_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
- Moneta.new(:ActiveRecord, :table => 'simple_activerecord_with_expires', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root' }, :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_activerecord_with_expires.log')})
-+ Moneta.new(:ActiveRecord, :table => 'simple_activerecord_with_expires', :connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcmysql' : 'mysql2'), :database => 'moneta', :username => 'root', :socket => ENV['MYSQL_TEST_SOCKET'] }, :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_activerecord_with_expires.log')})
- end
-
- def load_value(value)
+- end
+-
+- def load_value(value)
+- ::Marshal.load(value.unpack('m').first)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
+diff --git a/spec/moneta/simple_couch_spec.rb b/spec/moneta/simple_couch_spec.rb
+index 2a3217a..e69de29 100644
+--- a/spec/moneta/simple_couch_spec.rb
++++ b/spec/moneta/simple_couch_spec.rb
+@@ -1,152 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_couch" do
+- def features
+- []
+- end
+-
+- def new_store
+- Moneta.new(:Couch, :db => 'simple_couch', :logger => {:file => File.join(make_tempdir, 'simple_couch.log')})
+- end
+-
+- def load_value(value)
+- ::Marshal.load(value.unpack('m').first)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_couch_with_expires_spec.rb b/spec/moneta/simple_couch_with_expires_spec.rb
+index 51dd2f3..e69de29 100644
+--- a/spec/moneta/simple_couch_with_expires_spec.rb
++++ b/spec/moneta/simple_couch_with_expires_spec.rb
+@@ -1,153 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_couch_with_expires" do
+- def features
+- [:expires]
+- end
+-
+- def new_store
+- Moneta.new(:Couch, :db => 'simple_couch_with_expires', :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_couch_with_expires.log')})
+- end
+-
+- def load_value(value)
+- ::Marshal.load(value.unpack('m').first)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
diff --git a/spec/moneta/simple_datamapper_spec.rb b/spec/moneta/simple_datamapper_spec.rb
-index da6014d..d95decd 100644
+index da6014d..e69de29 100644
--- a/spec/moneta/simple_datamapper_spec.rb
+++ b/spec/moneta/simple_datamapper_spec.rb
-@@ -9,7 +9,7 @@ describe_moneta "simple_datamapper" do
- end
-
- def new_store
+@@ -1,155 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_datamapper" do
+- require 'dm-core'
+- DataMapper.setup(:default, :adapter => :in_memory)
+- def features
+- [:create]
+- end
+-
+- def new_store
- Moneta.new(:DataMapper, :setup => "mysql://root:@localhost/moneta", :table => "simple_datamapper", :logger => {:file => File.join(make_tempdir, 'simple_datamapper.log')})
-+ Moneta.new(:DataMapper, :setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "simple_datamapper", :logger => {:file => File.join(make_tempdir, 'simple_datamapper.log')})
- end
-
- def load_value(value)
+- end
+-
+- def load_value(value)
+- ::Marshal.load(value.unpack('m').first)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
diff --git a/spec/moneta/simple_datamapper_with_expires_spec.rb b/spec/moneta/simple_datamapper_with_expires_spec.rb
-index a50aa35..c031e0d 100644
+index a50aa35..e69de29 100644
--- a/spec/moneta/simple_datamapper_with_expires_spec.rb
+++ b/spec/moneta/simple_datamapper_with_expires_spec.rb
-@@ -9,7 +9,7 @@ describe_moneta "simple_datamapper_with_expires" do
- end
-
- def new_store
+@@ -1,157 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_datamapper_with_expires" do
+- require 'dm-core'
+- DataMapper.setup(:default, :adapter => :in_memory)
+- def features
+- [:create, :expires]
+- end
+-
+- def new_store
- Moneta.new(:DataMapper, :setup => "mysql://root:@localhost/moneta", :table => "simple_datamapper_with_expires", :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_datamapper_with_expires.log')})
-+ Moneta.new(:DataMapper, :setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "simple_datamapper_with_expires", :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_datamapper_with_expires.log')})
- end
-
- def load_value(value)
+- end
+-
+- def load_value(value)
+- ::Marshal.load(value.unpack('m').first)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
diff --git a/spec/moneta/simple_datamapper_with_repository_spec.rb b/spec/moneta/simple_datamapper_with_repository_spec.rb
-index 8748503..c7e59ee 100644
+index 8748503..e69de29 100644
--- a/spec/moneta/simple_datamapper_with_repository_spec.rb
+++ b/spec/moneta/simple_datamapper_with_repository_spec.rb
-@@ -9,7 +9,7 @@ describe_moneta "simple_datamapper_with_repository" do
- end
-
- def new_store
+@@ -1,155 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_datamapper_with_repository" do
+- require 'dm-core'
+- DataMapper.setup(:default, :adapter => :in_memory)
+- def features
+- [:create]
+- end
+-
+- def new_store
- Moneta.new(:DataMapper, :repository => :repo, :setup => "mysql://root:@localhost/moneta", :table => "simple_datamapper_with_repository", :logger => {:file => File.join(make_tempdir, 'simple_datamapper_with_repository.log')})
-+ Moneta.new(:DataMapper, :repository => :repo, :setup => "mysql://root:@localhost/moneta#{ENV["MYSQL_TEST_SOCKET"] ? "?socket=#{ENV["MYSQL_TEST_SOCKET"]}" : ""}", :table => "simple_datamapper_with_repository", :logger => {:file => File.join(make_tempdir, 'simple_datamapper_with_repository.log')})
- end
-
- def load_value(value)
+- end
+-
+- def load_value(value)
+- ::Marshal.load(value.unpack('m').first)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_daybreak_spec.rb b/spec/moneta/simple_daybreak_spec.rb
+index d1b5f38..e69de29 100644
+--- a/spec/moneta/simple_daybreak_spec.rb
++++ b/spec/moneta/simple_daybreak_spec.rb
+@@ -1,151 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_daybreak" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:Daybreak, :file => File.join(make_tempdir, "simple_daybreak"), :logger => {:file => File.join(make_tempdir, 'simple_daybreak.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_daybreak_with_expires_spec.rb b/spec/moneta/simple_daybreak_with_expires_spec.rb
+index a52733e..e69de29 100644
+--- a/spec/moneta/simple_daybreak_with_expires_spec.rb
++++ b/spec/moneta/simple_daybreak_with_expires_spec.rb
+@@ -1,153 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_daybreak_with_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:Daybreak, :file => File.join(make_tempdir, "simple_daybreak_with_expires"), :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_daybreak_with_expires.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
+diff --git a/spec/moneta/simple_hbase_spec.rb b/spec/moneta/simple_hbase_spec.rb
+index cb249a5..e69de29 100644
+--- a/spec/moneta/simple_hbase_spec.rb
++++ b/spec/moneta/simple_hbase_spec.rb
+@@ -1,153 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_hbase" do
+- def features
+- [:increment]
+- end
+-
+- def new_store
+- Moneta.new(:HBase, :table => "simple_hbase", :logger => {:file => File.join(make_tempdir, 'simple_hbase.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_hbase_with_expires_spec.rb b/spec/moneta/simple_hbase_with_expires_spec.rb
+index 3f811a9..e69de29 100644
+--- a/spec/moneta/simple_hbase_with_expires_spec.rb
++++ b/spec/moneta/simple_hbase_with_expires_spec.rb
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_hbase_with_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:HBase, :table => "simple_hbase", :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_hbase_with_expires.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
+diff --git a/spec/moneta/simple_leveldb_spec.rb b/spec/moneta/simple_leveldb_spec.rb
+index fd112a4..e69de29 100644
+--- a/spec/moneta/simple_leveldb_spec.rb
++++ b/spec/moneta/simple_leveldb_spec.rb
+@@ -1,151 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_leveldb" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:LevelDB, :dir => File.join(make_tempdir, "simple_leveldb"), :logger => {:file => File.join(make_tempdir, 'simple_leveldb.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_leveldb_with_expires_spec.rb b/spec/moneta/simple_leveldb_with_expires_spec.rb
+index 90d8900..e69de29 100644
+--- a/spec/moneta/simple_leveldb_with_expires_spec.rb
++++ b/spec/moneta/simple_leveldb_with_expires_spec.rb
+@@ -1,153 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_leveldb_with_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:LevelDB, :dir => File.join(make_tempdir, "simple_leveldb_with_expires"), :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_leveldb_with_expires.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
+diff --git a/spec/moneta/simple_localmemcache_spec.rb b/spec/moneta/simple_localmemcache_spec.rb
+index fac91fc..e69de29 100644
+--- a/spec/moneta/simple_localmemcache_spec.rb
++++ b/spec/moneta/simple_localmemcache_spec.rb
+@@ -1,152 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_localmemcache" do
+- def features
+- []
+- end
+-
+- def new_store
+- Moneta.new(:LocalMemCache, :file => File.join(make_tempdir, "simple_localmemcache"), :logger => {:file => File.join(make_tempdir, 'simple_localmemcache.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_localmemcache_with_expires_spec.rb b/spec/moneta/simple_localmemcache_with_expires_spec.rb
+index e55271b..e69de29 100644
+--- a/spec/moneta/simple_localmemcache_with_expires_spec.rb
++++ b/spec/moneta/simple_localmemcache_with_expires_spec.rb
+@@ -1,153 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_localmemcache_with_expires" do
+- def features
+- [:expires]
+- end
+-
+- def new_store
+- Moneta.new(:LocalMemCache, :file => File.join(make_tempdir, "simple_localmemcache_with_expires"), :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_localmemcache_with_expires.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
+diff --git a/spec/moneta/simple_memcached_dalli_spec.rb b/spec/moneta/simple_memcached_dalli_spec.rb
+index 672a57a..e69de29 100644
+--- a/spec/moneta/simple_memcached_dalli_spec.rb
++++ b/spec/moneta/simple_memcached_dalli_spec.rb
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_memcached_dalli" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:MemcachedDalli, :namespace => "simple_memcached_dalli", :logger => {:file => File.join(make_tempdir, 'simple_memcached_dalli.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_memcached_native_spec.rb b/spec/moneta/simple_memcached_native_spec.rb
+index 654fe31..e69de29 100644
+--- a/spec/moneta/simple_memcached_native_spec.rb
++++ b/spec/moneta/simple_memcached_native_spec.rb
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_memcached_native" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:MemcachedNative, :namespace => "simple_memcached_native", :logger => {:file => File.join(make_tempdir, 'simple_memcached_native.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_memcached_spec.rb b/spec/moneta/simple_memcached_spec.rb
+index b475f83..e69de29 100644
+--- a/spec/moneta/simple_memcached_spec.rb
++++ b/spec/moneta/simple_memcached_spec.rb
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_memcached" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:Memcached, :namespace => "simple_memcached", :logger => {:file => File.join(make_tempdir, 'simple_memcached.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_memory_with_snappy_compress_spec.rb b/spec/moneta/simple_memory_with_snappy_compress_spec.rb
+index b40a061..e69de29 100644
+--- a/spec/moneta/simple_memory_with_snappy_compress_spec.rb
++++ b/spec/moneta/simple_memory_with_snappy_compress_spec.rb
+@@ -1,116 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_memory_with_snappy_compress" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:Memory, :compress => :snappy, :logger => {:file => File.join(make_tempdir, 'simple_memory_with_snappy_compress.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(::Snappy.inflate(value))
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'not_persist'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_mongo_spec.rb b/spec/moneta/simple_mongo_spec.rb
+index 7bfcf48..e69de29 100644
+--- a/spec/moneta/simple_mongo_spec.rb
++++ b/spec/moneta/simple_mongo_spec.rb
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_mongo" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:Mongo, :db => 'simple_mongo', :logger => {:file => File.join(make_tempdir, 'simple_mongo.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_redis_spec.rb b/spec/moneta/simple_redis_spec.rb
+index cf2d758..e69de29 100644
+--- a/spec/moneta/simple_redis_spec.rb
++++ b/spec/moneta/simple_redis_spec.rb
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_redis" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:Redis, :logger => {:file => File.join(make_tempdir, 'simple_redis.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_restclient_spec.rb b/spec/moneta/simple_restclient_spec.rb
+index 71c31e9..e69de29 100644
+--- a/spec/moneta/simple_restclient_spec.rb
++++ b/spec/moneta/simple_restclient_spec.rb
+@@ -1,153 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_restclient" do
+- start_restserver
+- def features
+- []
+- end
+-
+- def new_store
+- Moneta.new(:RestClient, :url => 'http://localhost:8808/moneta/', :logger => {:file => File.join(make_tempdir, 'simple_restclient.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'features'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
diff --git a/spec/moneta/simple_sequel_spec.rb b/spec/moneta/simple_sequel_spec.rb
index a1f91ae..6ae3725 100644
--- a/spec/moneta/simple_sequel_spec.rb
@@ -207,3 +4406,1405 @@ index 9bd7130..8592955 100644
end
def load_value(value)
+diff --git a/spec/moneta/simple_tdb_spec.rb b/spec/moneta/simple_tdb_spec.rb
+index 0073627..e69de29 100644
+--- a/spec/moneta/simple_tdb_spec.rb
++++ b/spec/moneta/simple_tdb_spec.rb
+@@ -1,151 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_tdb" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:TDB, :file => File.join(make_tempdir, "simple_tdb"), :logger => {:file => File.join(make_tempdir, 'simple_tdb.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_tdb_with_expires_spec.rb b/spec/moneta/simple_tdb_with_expires_spec.rb
+index b6c0ec4..e69de29 100644
+--- a/spec/moneta/simple_tdb_with_expires_spec.rb
++++ b/spec/moneta/simple_tdb_with_expires_spec.rb
+@@ -1,153 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_tdb_with_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:TDB, :file => File.join(make_tempdir, "simple_tdb_with_expires"), :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_tdb_with_expires.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
+diff --git a/spec/moneta/simple_tokyotyrant_spec.rb b/spec/moneta/simple_tokyotyrant_spec.rb
+index 15d53a6..e69de29 100644
+--- a/spec/moneta/simple_tokyotyrant_spec.rb
++++ b/spec/moneta/simple_tokyotyrant_spec.rb
+@@ -1,154 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_tokyotyrant" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:TokyoTyrant, :logger => {:file => File.join(make_tempdir, 'simple_tokyotyrant.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+-end
+diff --git a/spec/moneta/simple_tokyotyrant_with_expires_spec.rb b/spec/moneta/simple_tokyotyrant_with_expires_spec.rb
+index 035a54e..e69de29 100644
+--- a/spec/moneta/simple_tokyotyrant_with_expires_spec.rb
++++ b/spec/moneta/simple_tokyotyrant_with_expires_spec.rb
+@@ -1,156 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "simple_tokyotyrant_with_expires" do
+- def features
+- [:create, :expires, :increment]
+- end
+-
+- def new_store
+- Moneta.new(:TokyoTyrant, :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_tokyotyrant_with_expires.log')})
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'concurrent_create'
+- it_should_behave_like 'concurrent_increment'
+- it_should_behave_like 'create'
+- it_should_behave_like 'create_expires'
+- it_should_behave_like 'expires'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'marshallable_key'
+- it_should_behave_like 'marshallable_value'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'persist_objectkey_objectvalue'
+- it_should_behave_like 'persist_objectkey_stringvalue'
+- it_should_behave_like 'persist_objectkey_hashvalue'
+- it_should_behave_like 'persist_objectkey_booleanvalue'
+- it_should_behave_like 'persist_objectkey_nilvalue'
+- it_should_behave_like 'persist_objectkey_integervalue'
+- it_should_behave_like 'persist_stringkey_objectvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_hashvalue'
+- it_should_behave_like 'persist_stringkey_booleanvalue'
+- it_should_behave_like 'persist_stringkey_nilvalue'
+- it_should_behave_like 'persist_stringkey_integervalue'
+- it_should_behave_like 'persist_hashkey_objectvalue'
+- it_should_behave_like 'persist_hashkey_stringvalue'
+- it_should_behave_like 'persist_hashkey_hashvalue'
+- it_should_behave_like 'persist_hashkey_booleanvalue'
+- it_should_behave_like 'persist_hashkey_nilvalue'
+- it_should_behave_like 'persist_hashkey_integervalue'
+- it_should_behave_like 'persist_booleankey_objectvalue'
+- it_should_behave_like 'persist_booleankey_stringvalue'
+- it_should_behave_like 'persist_booleankey_hashvalue'
+- it_should_behave_like 'persist_booleankey_booleanvalue'
+- it_should_behave_like 'persist_booleankey_nilvalue'
+- it_should_behave_like 'persist_booleankey_integervalue'
+- it_should_behave_like 'persist_nilkey_objectvalue'
+- it_should_behave_like 'persist_nilkey_stringvalue'
+- it_should_behave_like 'persist_nilkey_hashvalue'
+- it_should_behave_like 'persist_nilkey_booleanvalue'
+- it_should_behave_like 'persist_nilkey_nilvalue'
+- it_should_behave_like 'persist_nilkey_integervalue'
+- it_should_behave_like 'persist_integerkey_objectvalue'
+- it_should_behave_like 'persist_integerkey_stringvalue'
+- it_should_behave_like 'persist_integerkey_hashvalue'
+- it_should_behave_like 'persist_integerkey_booleanvalue'
+- it_should_behave_like 'persist_integerkey_nilvalue'
+- it_should_behave_like 'persist_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value_expires'
+-end
+diff --git a/spec/moneta/transformer_bencode_spec.rb b/spec/moneta/transformer_bencode_spec.rb
+index 2d239c3..e69de29 100644
+--- a/spec/moneta/transformer_bencode_spec.rb
++++ b/spec/moneta/transformer_bencode_spec.rb
+@@ -1,54 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_bencode" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :key => :bencode, :value => :bencode
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::BEncode.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::BencodeKeyBencodeValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_bert_spec.rb b/spec/moneta/transformer_bert_spec.rb
+index 56eeb29..e69de29 100644
+--- a/spec/moneta/transformer_bert_spec.rb
++++ b/spec/moneta/transformer_bert_spec.rb
+@@ -1,54 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_bert" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :key => :bert, :value => :bert
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::BERT.decode(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::BertKeyBertValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_bson_spec.rb b/spec/moneta/transformer_bson_spec.rb
+index 23bcf28..e69de29 100644
+--- a/spec/moneta/transformer_bson_spec.rb
++++ b/spec/moneta/transformer_bson_spec.rb
+@@ -1,54 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_bson" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :key => :bson, :value => :bson
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::BSON.deserialize(value)['v']
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::BsonKeyBsonValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_bzip2_spec.rb b/spec/moneta/transformer_bzip2_spec.rb
+index 1180d38..e69de29 100644
+--- a/spec/moneta/transformer_bzip2_spec.rb
++++ b/spec/moneta/transformer_bzip2_spec.rb
+@@ -1,48 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_bzip2" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :value => :bzip2
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::Bzip2.uncompress(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::Bzip2Value.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_lzma_spec.rb b/spec/moneta/transformer_lzma_spec.rb
+index c24a29f..e69de29 100644
+--- a/spec/moneta/transformer_lzma_spec.rb
++++ b/spec/moneta/transformer_lzma_spec.rb
+@@ -1,48 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_lzma" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :value => :lzma
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::LZMA.decompress(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::LzmaValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_lzo_spec.rb b/spec/moneta/transformer_lzo_spec.rb
+index 1d8d8c8..e69de29 100644
+--- a/spec/moneta/transformer_lzo_spec.rb
++++ b/spec/moneta/transformer_lzo_spec.rb
+@@ -1,48 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_lzo" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :value => :lzo
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::LZO.decompress(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::LzoValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_msgpack_spec.rb b/spec/moneta/transformer_msgpack_spec.rb
+index be22155..e69de29 100644
+--- a/spec/moneta/transformer_msgpack_spec.rb
++++ b/spec/moneta/transformer_msgpack_spec.rb
+@@ -1,54 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_msgpack" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :key => :msgpack, :value => :msgpack
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::MessagePack.unpack(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::MsgpackKeyMsgpackValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_ox_spec.rb b/spec/moneta/transformer_ox_spec.rb
+index e2c640a..e69de29 100644
+--- a/spec/moneta/transformer_ox_spec.rb
++++ b/spec/moneta/transformer_ox_spec.rb
+@@ -1,120 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_ox" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :key => :ox, :value => :ox
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::Ox.parse_obj(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_objectkey_objectvalue'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_objectkey_hashvalue'
+- it_should_behave_like 'null_objectkey_booleanvalue'
+- it_should_behave_like 'null_objectkey_nilvalue'
+- it_should_behave_like 'null_objectkey_integervalue'
+- it_should_behave_like 'null_stringkey_objectvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_booleanvalue'
+- it_should_behave_like 'null_stringkey_nilvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_objectvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_booleanvalue'
+- it_should_behave_like 'null_hashkey_nilvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_booleankey_objectvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_booleankey_hashvalue'
+- it_should_behave_like 'null_booleankey_booleanvalue'
+- it_should_behave_like 'null_booleankey_nilvalue'
+- it_should_behave_like 'null_booleankey_integervalue'
+- it_should_behave_like 'null_nilkey_objectvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_nilkey_hashvalue'
+- it_should_behave_like 'null_nilkey_booleanvalue'
+- it_should_behave_like 'null_nilkey_nilvalue'
+- it_should_behave_like 'null_nilkey_integervalue'
+- it_should_behave_like 'null_integerkey_objectvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_booleanvalue'
+- it_should_behave_like 'null_integerkey_nilvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_objectkey_objectvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_hashvalue'
+- it_should_behave_like 'returndifferent_stringkey_objectvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_objectvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_booleankey_objectvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_hashvalue'
+- it_should_behave_like 'returndifferent_nilkey_objectvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_objectvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_objectkey_objectvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_objectkey_hashvalue'
+- it_should_behave_like 'store_objectkey_booleanvalue'
+- it_should_behave_like 'store_objectkey_nilvalue'
+- it_should_behave_like 'store_objectkey_integervalue'
+- it_should_behave_like 'store_stringkey_objectvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_booleanvalue'
+- it_should_behave_like 'store_stringkey_nilvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_objectvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_booleanvalue'
+- it_should_behave_like 'store_hashkey_nilvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_booleankey_objectvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_booleankey_hashvalue'
+- it_should_behave_like 'store_booleankey_booleanvalue'
+- it_should_behave_like 'store_booleankey_nilvalue'
+- it_should_behave_like 'store_booleankey_integervalue'
+- it_should_behave_like 'store_nilkey_objectvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_nilkey_hashvalue'
+- it_should_behave_like 'store_nilkey_booleanvalue'
+- it_should_behave_like 'store_nilkey_nilvalue'
+- it_should_behave_like 'store_nilkey_integervalue'
+- it_should_behave_like 'store_integerkey_objectvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_booleanvalue'
+- it_should_behave_like 'store_integerkey_nilvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::OxKeyOxValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_quicklz_spec.rb b/spec/moneta/transformer_quicklz_spec.rb
+index 67ba16c..e69de29 100644
+--- a/spec/moneta/transformer_quicklz_spec.rb
++++ b/spec/moneta/transformer_quicklz_spec.rb
+@@ -1,48 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_quicklz" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :value => :quicklz
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::QuickLZ.decompress(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::QuicklzValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_snappy_spec.rb b/spec/moneta/transformer_snappy_spec.rb
+index 790a806..e69de29 100644
+--- a/spec/moneta/transformer_snappy_spec.rb
++++ b/spec/moneta/transformer_snappy_spec.rb
+@@ -1,48 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_snappy" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :value => :snappy
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::Snappy.inflate(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_objectkey_stringvalue'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_booleankey_stringvalue'
+- it_should_behave_like 'null_nilkey_stringvalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_objectkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_booleankey_stringvalue'
+- it_should_behave_like 'returndifferent_nilkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'store_objectkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_booleankey_stringvalue'
+- it_should_behave_like 'store_nilkey_stringvalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::SnappyValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/transformer_tnet_spec.rb b/spec/moneta/transformer_tnet_spec.rb
+index d5d05eb..e69de29 100644
+--- a/spec/moneta/transformer_tnet_spec.rb
++++ b/spec/moneta/transformer_tnet_spec.rb
+@@ -1,54 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "transformer_tnet" do
+- def features
+- [:create, :increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :Transformer, :key => :tnet, :value => :tnet
+- adapter :Memory
+- end
+- end
+-
+- def load_value(value)
+- ::TNetstring.parse(value).first
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'null_stringkey_hashvalue'
+- it_should_behave_like 'null_stringkey_integervalue'
+- it_should_behave_like 'null_hashkey_stringvalue'
+- it_should_behave_like 'null_hashkey_hashvalue'
+- it_should_behave_like 'null_hashkey_integervalue'
+- it_should_behave_like 'null_integerkey_stringvalue'
+- it_should_behave_like 'null_integerkey_hashvalue'
+- it_should_behave_like 'null_integerkey_integervalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_hashvalue'
+- it_should_behave_like 'returndifferent_hashkey_stringvalue'
+- it_should_behave_like 'returndifferent_hashkey_hashvalue'
+- it_should_behave_like 'returndifferent_integerkey_stringvalue'
+- it_should_behave_like 'returndifferent_integerkey_hashvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_hashvalue'
+- it_should_behave_like 'store_stringkey_integervalue'
+- it_should_behave_like 'store_hashkey_stringvalue'
+- it_should_behave_like 'store_hashkey_hashvalue'
+- it_should_behave_like 'store_hashkey_integervalue'
+- it_should_behave_like 'store_integerkey_stringvalue'
+- it_should_behave_like 'store_integerkey_hashvalue'
+- it_should_behave_like 'store_integerkey_integervalue'
+- it_should_behave_like 'store_large'
+- it_should_behave_like 'transform_value'
+- it 'compile transformer class' do
+- store.should_not be_nil
+- Moneta::Transformer::TnetKeyTnetValue.should_not be_nil
+- end
+-end
+diff --git a/spec/moneta/weak_create_spec.rb b/spec/moneta/weak_create_spec.rb
+index ff0ac53..e69de29 100644
+--- a/spec/moneta/weak_create_spec.rb
++++ b/spec/moneta/weak_create_spec.rb
+@@ -1,30 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "weak_create" do
+- def features
+- [:create]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :WeakCreate
+- adapter :Couch, :db => 'weak_create'
+- end
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'create'
+- it_should_behave_like 'features'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_increment'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/moneta/weak_increment_spec.rb b/spec/moneta/weak_increment_spec.rb
+index 2211bca..e69de29 100644
+--- a/spec/moneta/weak_increment_spec.rb
++++ b/spec/moneta/weak_increment_spec.rb
+@@ -1,30 +0,0 @@
+-# Generated by generate-specs
+-require 'helper'
+-
+-describe_moneta "weak_increment" do
+- def features
+- [:increment]
+- end
+-
+- def new_store
+- Moneta.build do
+- use :WeakIncrement
+- adapter :Couch, :db => 'weak_increment'
+- end
+- end
+-
+- def load_value(value)
+- Marshal.load(value)
+- end
+-
+- include_context 'setup_store'
+- it_should_behave_like 'features'
+- it_should_behave_like 'increment'
+- it_should_behave_like 'multiprocess'
+- it_should_behave_like 'not_create'
+- it_should_behave_like 'null_stringkey_stringvalue'
+- it_should_behave_like 'persist_stringkey_stringvalue'
+- it_should_behave_like 'returndifferent_stringkey_stringvalue'
+- it_should_behave_like 'store_stringkey_stringvalue'
+- it_should_behave_like 'store_large'
+-end
+diff --git a/spec/monetaspecs.rb b/spec/monetaspecs.rb
+index 528922b..fc8180b 100644
+--- a/spec/monetaspecs.rb
++++ b/spec/monetaspecs.rb
+@@ -17174,6 +17174,8 @@ shared_examples_for 'concurrent_increment' do
+ end
+
+ it 'have atomic increment across multiple processes' do
++ pending "a more reliable implementation suitable for Debian packaging"
++
+ a = increment_thread('a')
+ b = increment_thread('b')
+ c = increment_thread('c')
diff --git a/debian/patches/0100-Do-not-run-action_dispatch-specs.patch b/debian/patches/0100-Do-not-run-action_dispatch-specs.patch
new file mode 100644
index 0000000..fcf7546
--- /dev/null
+++ b/debian/patches/0100-Do-not-run-action_dispatch-specs.patch
@@ -0,0 +1,23 @@
+From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Bobbio?= <lunar at debian.org>
+Date: Wed, 27 Mar 2013 09:24:51 +0000
+Subject: Do not run action_dispatch specs
+
+It's not available in Debian yet.
+---
+ Rakefile | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/Rakefile b/Rakefile
+index 785b5a5..a86feb8 100644
+--- a/Rakefile
++++ b/Rakefile
+@@ -44,6 +44,9 @@ task :test do
+ unstable = specs.select {|s| s =~ unstable_re }
+ specs -= unstable
+
++ # action_dispatch is not available in Debian
++ specs.delete_if { |s| s =~ /spec\/action_dispatch\// }
++
+ if group =~ /^(\d+)\/(\d+)$/
+ n = $1.to_i
+ max = $2.to_i
diff --git a/debian/patches/series b/debian/patches/series
index c3305af..3bc4508 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,5 @@
0001-Allow-to-specify-the-MySQL-socket-through-the-MYSQL_.patch
+0002-Mark-concurrent-increment-example-as-pending.patch
+0003-Skip-specs-for-which-we-miss-a-dependency.patch
0099-Re-generate-specs-using-script-generate-specs.patch
+0100-Do-not-run-action_dispatch-specs.patch
--
ruby-moneta.git
More information about the Pkg-ruby-extras-commits
mailing list