delano / gibbler Goto Github PK
View Code? Open in Web Editor NEWImplementation-agnostic git-like hashes and history for Ruby objects
Home Page: http://delano.github.com/gibbler
License: MIT License
Implementation-agnostic git-like hashes and history for Ruby objects
Home Page: http://delano.github.com/gibbler
License: MIT License
When adding gibbler to your .gemfile and starting the rails server, the following error is thrown:
undefined method `__gibbler' for #ActionView::FileSystemResolver:0x103dd0ac8
See the full error here: https://gist.github.com/1163868
I guess Gibbler is trying to add the gibbler methods to things that I don't want it to.
flame@yamato gibbler % sergeant
History
Basics
"can convert short digest into long" PASS
"can return most recent stamp" PASS
"can return history" PASS
"can return history (short)" PASS
Hash History
"Setup Hash class" PASS
"doesn't reveal self.__gibbler_history instance variable" PASS
"can take a Hash snapshot" PASS
"return a Hash history" PASS
"can revert Hash" PASS
"knows a valid gibble" PASS
"knows an invalid gibble" PASS
"can revert to any valid gibble" PASS
"revert does nothing if digest is the same as current one" PASS
"can revert using short gibble" PASS
String History
"Setup String class" PASS
"can take a String snapshot" PASS
"return a String history" PASS
"can revert String" PASS
Arbitrary Object History
"Setup String class" PASS
"can take a FullHouse snapshot" PASS
"return a FullHouse history" FAIL
"can revert FullHouse" PASS
"return a FullHouse history" 1/1
failed: ["4192d4cb59975813f117a51dcd4454ac16df6703", "05219bdee8ec6300b579f2ba8ce55d851d10928b"] == ["4192d4cb59975813f117a51dcd4454ac16df6703", "2c6957aa1e734d2a3a71caf569a7461a3bf26f11"]
drill: ["4192d4cb59975813f117a51dcd4454ac16df6703", "05219bdee8ec6300b579f2ba8ce55d851d10928b"]
dream: ["4192d4cb59975813f117a51dcd4454ac16df6703", "2c6957aa1e734d2a3a71caf569a7461a3bf26f11"]
Exceptions
"raises exception when reverting to unknown gibble" PASS
"raises exception when reverting and there's no history" PASS
"raises exception when reverting an unsupported object" PASS
Array History
"Setup Array class" PASS
"can take a Array snapshot" PASS
"return an Array history" PASS
"can revert Array" PASS
Gibbler Gazette
URI object tryouts
"URI::HTTP can gibbler" PASS
"URI::HTTPS can gibbler" PASS
"URI::HTTP is trailing slash sensitive" PASS
"URI::Generic can gibbler" PASS
"URI::FTP can gibbler" PASS
Time tryouts
"Date instance can gibbler" PASS
"Time instance can gibbler" PASS
"Time instance can gibbler with single digit values" PASS
"DateTime instance can gibbler" PASS
"Time digest is based on UTC" PASS
"DateTime digest is based on UTC" PASS
Basic syntax with SHA256
"A Symbol can gibbler" PASS
"Class can gibbler" PASS
"TrueClass can gibbler" PASS
"Empty Hash instance" PASS
Extended object tryouts
"true can gibbler" PASS
"false can gibbler" PASS
"TrueClass can gibbler" PASS
"FalseClass can gibbler" PASS
"Class can gibbler" PASS
"Object can gibbler" PASS
"Class instance can gibbler" PASS
"Module can gibbler" PASS
"Module instance can gibbler" PASS
"Proc can gibbler" PASS
"Range instance (..) can gibbler" PASS
"Range instance (...) can gibbler" PASS
"Range (..) doesn't equal range (...)" PASS
"nil has a gibbler" PASS
"Module can gibbler" PASS
"Module instance can gibbler" PASS
"Class can gibbler" PASS
Proc
"Proc.new can gibbler" PASS
"Proc can gibbler" PASS
"proc can gibbler" PASS
"lambda can gibbler" PASS
"lambda gibbler is not aware of arity" PASS
"proc gibbler is not aware of arity" PASS
"Proc gibbler is not aware of proc payload" PASS
"MyProc has a different digest" PASS
Basic syntax with SHA1
"include Gibbler raises exception" PASS
"Symbol can gibbler" PASS
"String can gibbler" PASS
"String and Symbol return different digests" PASS
"Class can gibbler" PASS
"Empty Hash instance" PASS
"Fixnum instance" PASS
"Bignum instance" PASS
"Populated Hash instance" PASS
"Empty Array instance" PASS
"Populated Array instance" PASS
"Knows when a Hash has not changed" PASS
"Knows when a Hash has changed" PASS
"Symbols digests don't cross streams" PASS
"String digests don't cross streams" PASS
"Symbol has list of attic vars" PASS
"String has list of attic vars" FAIL
"Hash has list of attic vars" FAIL
"Freezing an object will update the digest" PASS
"works on arbitrary objects" FAIL
"doesn't reveal @__gibbler_digest__ instance variable" PASS
"previous digest" PASS
"String has list of attic vars" 1/3
failed: [:gibbler_cache, :__gibbler_history] == [:gibbler_cache]
drill: [:gibbler_cache, :__gibbler_history]
dream: [:gibbler_cache]
"Hash has list of attic vars" 2/3
failed: [:gibbler_cache, :__gibbler_history] == [:gibbler_cache]
drill: [:gibbler_cache, :__gibbler_history]
dream: [:gibbler_cache]
"works on arbitrary objects" 3/3
failed: #<FullHouse:0x7ff06a3dfe20 @roles=[:jesse, :joey, :danny, :kimmy, :michelle, :dj, :stephanie]>.gibbler == "6ea546919dc4caa2bab69799b71d48810a1b48fa"
drill: "fa5f741275b6b27932537e1946042b0286286e1d"
dream: "6ea546919dc4caa2bab69799b71d48810a1b48fa"
File object tryouts
"File can gibbler" FAIL
"Gibbler is different for each path" FAIL
"TempFile can gibbler" PASS
"TempFile digests change" PASS
"File doesn't care about file contents" PASS
"File can gibbler" 1/2
failed: #<File:/media/repos/flame/ruby/gibbler/CHANGES.txt>.gibbler == "33027386bd95e91efc4711648d488519062d828f"
drill: "d5b2b0ac570bf7ac3aa1ca7e3d905b325de31671"
dream: "33027386bd95e91efc4711648d488519062d828f"
"Gibbler is different for each path" 2/2
failed: #<File:/media/repos/flame/ruby/gibbler/README.rdoc>.gibbler == "4c131b7e5f9e7b841b4501d2d002785d3730ae19"
drill: "6b84d8790e02fdea14dc46ef3f5fdcc1da6e392b"
dream: "4c131b7e5f9e7b841b4501d2d002785d3730ae19"
Mixins
String
"has String#clear" PASS
Performance
Speed
"Setup variables" PASS
"Array#hash" PASS
"Array#gibbler" PASS
"Hash#hash" PASS
"Hash#gibbler" PASS
Uniqueness
"Array#hash, all unique" PASS
"Hash#hash, all unique" PASS
"Array#gibbler, all unique" PASS
"Hash#gibbler, all unique" PASS
Gibbler::Digest
All methods
"has short method" PASS
"can Gibbler::Digest#short" PASS
"== is strict (only exact matches)" PASS
"=== is relaxed (allows partial matches)" PASS
"supports base36 output" PASS
"base36 works on digests too" PASS
"base36 digests can be short too" PASS
Backwards compatability
"Gibbler Objects have gibbler_cache method" PASS
"Gibbler Objects have __gibbler_cache method" PASS
"__gibbler_cache returns the same value as gibbler_cache" PASS
Aliases
Gibbler::Object Aliases
"has digest" PASS
"has digest_cache" PASS
"has changed?" PASS
Gibbler::History Aliases
"can convert short digest into long" PASS
"can return most recent stamp" PASS
"can return history" PASS
"can return history (short)" PASS
117 of 123 dreams came true (95%)
flame@yamato gibbler % ruby19 -S sergeant
History
Basics
"can convert short digest into long" PASS
"can return most recent stamp" PASS
"can return history" PASS
"can return history (short)" PASS
Hash History
"Setup Hash class" PASS
"doesn't reveal self.__gibbler_history instance variable" PASS
"can take a Hash snapshot" PASS
"return a Hash history" PASS
"can revert Hash" PASS
"knows a valid gibble" PASS
"knows an invalid gibble" PASS
"can revert to any valid gibble" PASS
"revert does nothing if digest is the same as current one" PASS
"can revert using short gibble" PASS
String History
"Setup String class" PASS
"can take a String snapshot" PASS
"return a String history" PASS
"can revert String" PASS
Arbitrary Object History
"Setup String class" PASS
"can take a FullHouse snapshot" PASS
"return a FullHouse history" FAIL
"can revert FullHouse" PASS
"return a FullHouse history" 1/1
failed: ["4192d4cb59975813f117a51dcd4454ac16df6703", "05219bdee8ec6300b579f2ba8ce55d851d10928b"] == ["4192d4cb59975813f117a51dcd4454ac16df6703", "2c6957aa1e734d2a3a71caf569a7461a3bf26f11"]
drill: ["4192d4cb59975813f117a51dcd4454ac16df6703", "05219bdee8ec6300b579f2ba8ce55d851d10928b"]
dream: ["4192d4cb59975813f117a51dcd4454ac16df6703", "2c6957aa1e734d2a3a71caf569a7461a3bf26f11"]
Exceptions
"raises exception when reverting to unknown gibble" PASS
"raises exception when reverting and there's no history" PASS
"raises exception when reverting an unsupported object" PASS
Array History
"Setup Array class" PASS
"can take a Array snapshot" PASS
"return an Array history" PASS
"can revert Array" PASS
Gibbler Gazette
URI object tryouts
"URI::HTTP can gibbler" PASS
"URI::HTTPS can gibbler" PASS
"URI::HTTP is trailing slash sensitive" PASS
"URI::Generic can gibbler" PASS
"URI::FTP can gibbler" PASS
Time tryouts
"Date instance can gibbler" PASS
"Time instance can gibbler" PASS
"Time instance can gibbler with single digit values" PASS
"DateTime instance can gibbler" PASS
"Time digest is based on UTC" PASS
"DateTime digest is based on UTC" PASS
Basic syntax with SHA256
"A Symbol can gibbler" PASS
"Class can gibbler" PASS
"TrueClass can gibbler" PASS
"Empty Hash instance" PASS
Extended object tryouts
"true can gibbler" PASS
"false can gibbler" PASS
"TrueClass can gibbler" PASS
"FalseClass can gibbler" PASS
"Class can gibbler" PASS
"Object can gibbler" PASS
"Class instance can gibbler" PASS
"Module can gibbler" PASS
"Module instance can gibbler" PASS
"Proc can gibbler" PASS
"Range instance (..) can gibbler" PASS
"Range instance (...) can gibbler" PASS
"Range (..) doesn't equal range (...)" PASS
"nil has a gibbler" PASS
"Module can gibbler" PASS
"Module instance can gibbler" PASS
"Class can gibbler" PASS
Proc
"Proc.new can gibbler" PASS
"Proc can gibbler" PASS
"proc can gibbler" PASS
"lambda can gibbler" PASS
"lambda gibbler is not aware of arity" PASS
"proc gibbler is not aware of arity" PASS
"Proc gibbler is not aware of proc payload" PASS
"MyProc has a different digest" PASS
Basic syntax with SHA1
"include Gibbler raises exception" PASS
"Symbol can gibbler" PASS
"String can gibbler" PASS
"String and Symbol return different digests" PASS
"Class can gibbler" PASS
"Empty Hash instance" PASS
"Fixnum instance" PASS
"Bignum instance" PASS
"Populated Hash instance" PASS
"Empty Array instance" PASS
"Populated Array instance" PASS
"Knows when a Hash has not changed" PASS
"Knows when a Hash has changed" PASS
"Symbols digests don't cross streams" PASS
"String digests don't cross streams" PASS
"Symbol has list of attic vars" PASS
"String has list of attic vars" FAIL
"Hash has list of attic vars" FAIL
"Freezing an object will update the digest" PASS
"works on arbitrary objects" FAIL
"doesn't reveal @__gibbler_digest__ instance variable" PASS
"previous digest" PASS
"String has list of attic vars" 1/3
failed: [:gibbler_cache, :__gibbler_history] == [:gibbler_cache]
drill: [:gibbler_cache, :__gibbler_history]
dream: [:gibbler_cache]
"Hash has list of attic vars" 2/3
failed: [:gibbler_cache, :__gibbler_history] == [:gibbler_cache]
drill: [:gibbler_cache, :__gibbler_history]
dream: [:gibbler_cache]
"works on arbitrary objects" 3/3
failed: #<FullHouse:0x0000000247bd18 @roles=[:jesse, :joey, :danny, :kimmy, :michelle, :dj, :stephanie]>.gibbler == "6ea546919dc4caa2bab69799b71d48810a1b48fa"
drill: "fa5f741275b6b27932537e1946042b0286286e1d"
dream: "6ea546919dc4caa2bab69799b71d48810a1b48fa"
File object tryouts
"File can gibbler" FAIL
"Gibbler is different for each path" FAIL
"TempFile can gibbler" PASS
"TempFile digests change" PASS
"File doesn't care about file contents" PASS
"File can gibbler" 1/2
failed: #<File:/media/repos/flame/ruby/gibbler/CHANGES.txt>.gibbler == "33027386bd95e91efc4711648d488519062d828f"
drill: "d5b2b0ac570bf7ac3aa1ca7e3d905b325de31671"
dream: "33027386bd95e91efc4711648d488519062d828f"
"Gibbler is different for each path" 2/2
failed: #<File:/media/repos/flame/ruby/gibbler/README.rdoc>.gibbler == "4c131b7e5f9e7b841b4501d2d002785d3730ae19"
drill: "6b84d8790e02fdea14dc46ef3f5fdcc1da6e392b"
dream: "4c131b7e5f9e7b841b4501d2d002785d3730ae19"
Mixins
String
"has String#clear" PASS
Performance
Speed
"Setup variables" PASS
"Array#hash" PASS
"Array#gibbler" PASS
"Hash#hash" PASS
"Hash#gibbler" PASS
Uniqueness
"Array#hash, all unique" PASS
"Hash#hash, all unique" PASS
"Array#gibbler, all unique" PASS
"Hash#gibbler, all unique" PASS
Gibbler::Digest
All methods
"has short method" PASS
"can Gibbler::Digest#short" PASS
"== is strict (only exact matches)" PASS
"=== is relaxed (allows partial matches)" PASS
"supports base36 output" PASS
"base36 works on digests too" PASS
"base36 digests can be short too" PASS
Backwards compatability
"Gibbler Objects have gibbler_cache method" PASS
"Gibbler Objects have __gibbler_cache method" PASS
"__gibbler_cache returns the same value as gibbler_cache" PASS
Aliases
Gibbler::Object Aliases
"has digest" PASS
"has digest_cache" PASS
"has changed?" PASS
Gibbler::History Aliases
"can convert short digest into long" PASS
"can return most recent stamp" PASS
"can return history" PASS
"can return history (short)" PASS
117 of 123 dreams came true (95%)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.