mirror of
https://git.FreeBSD.org/ports.git
synced 2025-02-07 11:49:40 +00:00
devel/rubygem-cow_proxy: Add rubygem-cow_proxy 0.3.3
This is a copy-on-write proxy for frozen Ruby objects, so duplicating frozen object is delayed until a method tries to change frozen object. CowProxy classes for array, hash, string and struct are provided. Objects from other classes will be proxied without copy-on-write, you have to create a CowProxy class for them to enable copy-on-write. Also you have to create CowProxy class for each object which have any getter method with arguments, because default CowProxy won't wrap returned value. Immutable classes such as Integer or TrueClass doesn't need copy-on-write proxy because they can't be changed. You can wrap every object in a proxy. Proxy will always send method calls to wrapped object, and wrap returned value with a CowProxy class if method has no argument, so a proxy will always return proxy objects for getters without arguments. When a method tries to change a frozen object, if proxy has copy-on-write enabled, it will duplicate frozen object and will send next method calls to duplicated object, in other case an exception is raised. WWW: https://github.com/activescaffold/cow_proxy
This commit is contained in:
parent
c37d8e474a
commit
ebc424519c
@ -6316,6 +6316,7 @@
|
||||
SUBDIR += rubygem-corefines
|
||||
SUBDIR += rubygem-cork
|
||||
SUBDIR += rubygem-countries
|
||||
SUBDIR += rubygem-cow_proxy
|
||||
SUBDIR += rubygem-crack
|
||||
SUBDIR += rubygem-cri
|
||||
SUBDIR += rubygem-csv
|
||||
|
17
devel/rubygem-cow_proxy/Makefile
Normal file
17
devel/rubygem-cow_proxy/Makefile
Normal file
@ -0,0 +1,17 @@
|
||||
PORTNAME= cow_proxy
|
||||
PORTVERSION= 0.3.3
|
||||
CATEGORIES= devel rubygems
|
||||
MASTER_SITES= RG
|
||||
|
||||
MAINTAINER= sunpoet@FreeBSD.org
|
||||
COMMENT= Copy-on-write proxy for frozen Ruby objects
|
||||
|
||||
LICENSE= MIT
|
||||
#LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||
|
||||
USES= gem
|
||||
USE_RUBY= yes
|
||||
|
||||
NO_ARCH= yes
|
||||
|
||||
.include <bsd.port.mk>
|
3
devel/rubygem-cow_proxy/distinfo
Normal file
3
devel/rubygem-cow_proxy/distinfo
Normal file
@ -0,0 +1,3 @@
|
||||
TIMESTAMP = 1660576710
|
||||
SHA256 (rubygem/cow_proxy-0.3.3.gem) = 705b307b714005366a64ce3ec15d5219cdfae0966a46fa4cf075d011bcc8618c
|
||||
SIZE (rubygem/cow_proxy-0.3.3.gem) = 11264
|
19
devel/rubygem-cow_proxy/pkg-descr
Normal file
19
devel/rubygem-cow_proxy/pkg-descr
Normal file
@ -0,0 +1,19 @@
|
||||
This is a copy-on-write proxy for frozen Ruby objects, so duplicating frozen
|
||||
object is delayed until a method tries to change frozen object.
|
||||
|
||||
CowProxy classes for array, hash, string and struct are provided. Objects from
|
||||
other classes will be proxied without copy-on-write, you have to create a
|
||||
CowProxy class for them to enable copy-on-write. Also you have to create
|
||||
CowProxy class for each object which have any getter method with arguments,
|
||||
because default CowProxy won't wrap returned value. Immutable classes such as
|
||||
Integer or TrueClass doesn't need copy-on-write proxy because they can't be
|
||||
changed.
|
||||
|
||||
You can wrap every object in a proxy. Proxy will always send method calls to
|
||||
wrapped object, and wrap returned value with a CowProxy class if method has no
|
||||
argument, so a proxy will always return proxy objects for getters without
|
||||
arguments. When a method tries to change a frozen object, if proxy has
|
||||
copy-on-write enabled, it will duplicate frozen object and will send next method
|
||||
calls to duplicated object, in other case an exception is raised.
|
||||
|
||||
WWW: https://github.com/activescaffold/cow_proxy
|
Loading…
x
Reference in New Issue
Block a user