attr_immutable 0.0.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +31 -0
- data/attr_immutable.gemspec +1 -0
- data/lib/attr_immutable/version.rb +1 -1
- data/spec/attr_immuable_spec.rb +25 -0
- metadata +51 -41
data/README.rdoc
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
= Description
|
2
|
+
|
3
|
+
A simple class method to create immutable attributes in the style or attr_attributes, attr_reader, attr_writer, etc.
|
4
|
+
|
5
|
+
= Requirements
|
6
|
+
|
7
|
+
JRuby
|
8
|
+
|
9
|
+
= Usage
|
10
|
+
|
11
|
+
Install the gem:
|
12
|
+
|
13
|
+
gem install attr_immutable
|
14
|
+
|
15
|
+
Run the code:
|
16
|
+
|
17
|
+
class ImmutableFoo
|
18
|
+
attr_immutable :foo
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
foo = Foo.new
|
23
|
+
foo.foo = 'Set the value'
|
24
|
+
foo.foo = 'Oops! This will raise an error' # <= This will raise a runtime error.
|
25
|
+
|
26
|
+
= History
|
27
|
+
|
28
|
+
SimpleWorkQueue is a fork of WorkQueue by Miguel Fonseca. SimpleWorkQueue removes the time out and bounded task queue.
|
29
|
+
The timeout created issues under the concurrency implementation in JRuby. The time out mechanism was replaced using a
|
30
|
+
non-blocking queue from the java.util.concurrent library. If a worker thread attempts to remove a task from the task queue
|
31
|
+
and it is empty it will exit the worker thread.
|
data/attr_immutable.gemspec
CHANGED
@@ -17,4 +17,5 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
|
+
s.add_development_dependency "rspec", "~> 2.6"
|
20
21
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'attr_immutable'
|
2
|
+
|
3
|
+
class TestClass
|
4
|
+
include AttrImmutable
|
5
|
+
attr_immutable :immutable_attr
|
6
|
+
end
|
7
|
+
|
8
|
+
describe 'attr_immutable' do
|
9
|
+
it "attributes should be nil unless set" do
|
10
|
+
test_object = TestClass.new
|
11
|
+
test_object.immutable_attr.should be_nil
|
12
|
+
end
|
13
|
+
|
14
|
+
it "can be set once and read" do
|
15
|
+
test_object = TestClass.new
|
16
|
+
test_object.immutable_attr = 'foo'
|
17
|
+
test_object.immutable_attr.should == 'foo'
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should raise an exception if an attr_immutable is set a second time" do
|
21
|
+
test_object = TestClass.new
|
22
|
+
test_object.immutable_attr = 'foo'
|
23
|
+
lambda { test_object.immutable_attr = 'foo' }.should raise_error
|
24
|
+
end
|
25
|
+
end
|
metadata
CHANGED
@@ -1,60 +1,70 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: attr_immutable
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.1
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
|
7
|
+
authors:
|
8
|
+
- Mark Menard
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
date: 2011-09-06 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &2161552580 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '2.6'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2161552580
|
25
|
+
description: AttrImmutable add the attr_immutable class method to create immutable
|
26
|
+
properties on Ruby classes. The attribute are only accessible using the accessor/mutator
|
27
|
+
pair by hiding the attribute value using a closure. (ie. the immutable attribute
|
28
|
+
is not stored in an instance variable and therefore can't accessed in any other
|
29
|
+
way.)
|
30
|
+
email:
|
31
|
+
- mark@mjm.net
|
19
32
|
executables: []
|
20
|
-
|
21
33
|
extensions: []
|
22
|
-
|
23
34
|
extra_rdoc_files: []
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
35
|
+
files:
|
36
|
+
- .gitignore
|
37
|
+
- Gemfile
|
38
|
+
- README.rdoc
|
39
|
+
- Rakefile
|
40
|
+
- attr_immutable.gemspec
|
41
|
+
- lib/attr_immutable.rb
|
42
|
+
- lib/attr_immutable/version.rb
|
43
|
+
- spec/attr_immuable_spec.rb
|
44
|
+
homepage: ''
|
33
45
|
licenses: []
|
34
|
-
|
35
46
|
post_install_message:
|
36
47
|
rdoc_options: []
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
48
|
+
require_paths:
|
49
|
+
- lib
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
41
51
|
none: false
|
42
|
-
requirements:
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ! '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
57
|
none: false
|
48
|
-
requirements:
|
49
|
-
|
50
|
-
|
51
|
-
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
52
62
|
requirements: []
|
53
|
-
|
54
63
|
rubyforge_project: attr_immutable
|
55
64
|
rubygems_version: 1.8.7
|
56
65
|
signing_key:
|
57
66
|
specification_version: 3
|
58
|
-
summary: Add attr_immutable to create immutable protected attributes on your Ruby
|
59
|
-
|
60
|
-
|
67
|
+
summary: Add attr_immutable to create immutable protected attributes on your Ruby
|
68
|
+
classes.
|
69
|
+
test_files:
|
70
|
+
- spec/attr_immuable_spec.rb
|