adamantium 0.0.5 → 0.0.6
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/.travis.yml +5 -3
- data/Gemfile +32 -21
- data/README.md +1 -1
- data/adamantium.gemspec +3 -3
- data/config/flog.yml +1 -1
- data/lib/adamantium.rb +0 -2
- data/lib/adamantium/freezer.rb +4 -11
- data/lib/adamantium/module_methods.rb +2 -2
- data/lib/adamantium/version.rb +1 -1
- data/spec/unit/adamantium/module_methods/memoize_spec.rb +5 -23
- data/tasks/metrics/ci.rake +1 -1
- metadata +16 -16
- data/tasks/metrics/reek.rake +0 -21
data/.travis.yml
CHANGED
@@ -3,17 +3,19 @@ before_install: gem install bundler
|
|
3
3
|
bundler_args: --without yard guard metrics benchmarks
|
4
4
|
script: "bundle exec rake spec"
|
5
5
|
rvm:
|
6
|
+
- ree
|
6
7
|
- 1.8.7
|
7
8
|
- 1.9.2
|
8
9
|
- 1.9.3
|
10
|
+
- 2.0.0
|
11
|
+
- ruby-head
|
9
12
|
- jruby-18mode
|
10
13
|
- jruby-19mode
|
14
|
+
- jruby-head
|
11
15
|
- rbx-18mode
|
12
16
|
- rbx-19mode
|
13
|
-
- ree
|
14
|
-
- ruby-head
|
15
|
-
- jruby-head
|
16
17
|
notifications:
|
18
|
+
irc: "irc.freenode.org#datamapper"
|
17
19
|
email:
|
18
20
|
- dan.kubb@gmail.com
|
19
21
|
- mbj@seonic.net
|
data/Gemfile
CHANGED
@@ -9,26 +9,26 @@ group :yard do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
group :guard do
|
12
|
-
gem 'guard', '~> 1.
|
12
|
+
gem 'guard', '~> 1.6.2'
|
13
13
|
gem 'guard-bundler', '~> 1.0.0'
|
14
14
|
gem 'guard-rspec', '~> 1.2.1'
|
15
|
-
end
|
16
15
|
|
17
|
-
|
18
|
-
gem '
|
19
|
-
|
16
|
+
# file system change event handling
|
17
|
+
gem 'rb-fchange', '~> 0.0.6', :require => false
|
18
|
+
gem 'rb-fsevent', '~> 0.9.3', :require => false
|
19
|
+
gem 'rb-inotify', '~> 0.9.0', :require => false
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
# notification handling
|
22
|
+
gem 'libnotify', '~> 0.8.0', :require => false
|
23
|
+
gem 'rb-notifu', '~> 0.0.4', :require => false
|
24
|
+
gem 'terminal-notifier-guard', '~> 1.5.3', :require => false
|
25
25
|
end
|
26
26
|
|
27
27
|
group :metrics do
|
28
28
|
gem 'flay', '~> 1.4.3'
|
29
29
|
gem 'flog', '~> 2.5.3'
|
30
|
-
gem 'roodi', '~> 2.
|
31
|
-
gem 'yardstick', '~> 0.
|
30
|
+
gem 'roodi', '~> 2.2.0'
|
31
|
+
gem 'yardstick', '~> 0.9.2'
|
32
32
|
|
33
33
|
platforms :ruby_18, :ruby_19 do
|
34
34
|
# this indirectly depends on ffi which does not build on ruby-head
|
@@ -36,18 +36,19 @@ group :metrics do
|
|
36
36
|
end
|
37
37
|
|
38
38
|
platforms :mri_18 do
|
39
|
-
gem 'arrayfields',
|
40
|
-
gem 'fattr',
|
41
|
-
gem 'heckle',
|
42
|
-
gem 'json',
|
43
|
-
gem 'map',
|
44
|
-
gem 'metric_fu',
|
45
|
-
gem 'mspec',
|
46
|
-
gem '
|
47
|
-
gem '
|
39
|
+
gem 'arrayfields', '~> 4.7.4' # for metric_fu
|
40
|
+
gem 'fattr', '~> 2.2.0' # for metric_fu
|
41
|
+
gem 'heckle', '~> 1.4.3'
|
42
|
+
gem 'json', '~> 1.7.7' # for metric_fu rake task
|
43
|
+
gem 'map', '~> 6.3.0' # for metric_fu
|
44
|
+
gem 'metric_fu', '~> 2.1.1'
|
45
|
+
gem 'mspec', '~> 1.5.17'
|
46
|
+
gem 'rails_best_practices', '= 1.13.3' # for metric_fu
|
47
|
+
gem 'rcov', '~> 1.0.0'
|
48
|
+
gem 'ruby2ruby', '= 1.2.2' # for heckle
|
48
49
|
end
|
49
50
|
|
50
|
-
platforms :
|
51
|
+
platforms :mri_19 do
|
51
52
|
gem 'simplecov', '~> 0.7.1'
|
52
53
|
end
|
53
54
|
|
@@ -55,3 +56,13 @@ group :metrics do
|
|
55
56
|
gem 'pelusa', '~> 0.2.2'
|
56
57
|
end
|
57
58
|
end
|
59
|
+
|
60
|
+
group :benchmarks do
|
61
|
+
gem 'rbench', '~> 0.2.3'
|
62
|
+
end
|
63
|
+
|
64
|
+
platform :jruby do
|
65
|
+
group :jruby do
|
66
|
+
gem 'jruby-openssl', '~> 0.8.2'
|
67
|
+
end
|
68
|
+
end
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@ Create immutable objects
|
|
5
5
|
|
6
6
|
[](https://travis-ci.org/dkubb/adamantium)
|
7
7
|
[](https://gemnasium.com/dkubb/adamantium)
|
8
|
-
[](https://codeclimate.com/github/dkubb/adamantium)
|
9
9
|
|
10
10
|
This is a small standalone gem featuring a module ripped out from [veritas](https://github.com/dkubb/veritas).
|
11
11
|
It allows to make objects immutable in an unobtrusive way.
|
data/adamantium.gemspec
CHANGED
@@ -16,10 +16,10 @@ Gem::Specification.new do |gem|
|
|
16
16
|
gem.test_files = `git ls-files -- spec/{unit,integration}`.split($/)
|
17
17
|
gem.extra_rdoc_files = %w[LICENSE README.md TODO]
|
18
18
|
|
19
|
-
gem.add_runtime_dependency('backports', '~> 2.
|
20
|
-
gem.add_runtime_dependency('ice_nine', '~> 0.
|
19
|
+
gem.add_runtime_dependency('backports', '~> 2.8.2')
|
20
|
+
gem.add_runtime_dependency('ice_nine', '~> 0.7.0')
|
21
21
|
|
22
22
|
gem.add_development_dependency('rake', '~> 10.0.3')
|
23
23
|
gem.add_development_dependency('rspec', '~> 1.3.2')
|
24
|
-
gem.add_development_dependency('yard', '~> 0.8.
|
24
|
+
gem.add_development_dependency('yard', '~> 0.8.4.1')
|
25
25
|
end
|
data/config/flog.yml
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
---
|
2
|
-
threshold:
|
2
|
+
threshold: 20.6
|
data/lib/adamantium.rb
CHANGED
@@ -30,7 +30,6 @@ module Adamantium
|
|
30
30
|
super
|
31
31
|
descendant.send(:include, Adamantium)
|
32
32
|
descendant.extend(self)
|
33
|
-
|
34
33
|
self
|
35
34
|
end
|
36
35
|
end
|
@@ -94,7 +93,6 @@ module Adamantium
|
|
94
93
|
unless memory.key?(name)
|
95
94
|
store_memory(name, freeze_object(value))
|
96
95
|
end
|
97
|
-
|
98
96
|
self
|
99
97
|
end
|
100
98
|
|
data/lib/adamantium/freezer.rb
CHANGED
@@ -100,12 +100,9 @@ module Adamantium
|
|
100
100
|
# @api private
|
101
101
|
def self.get(name)
|
102
102
|
case name
|
103
|
-
when :noop
|
104
|
-
|
105
|
-
when :
|
106
|
-
Deep
|
107
|
-
when :flat
|
108
|
-
Flat
|
103
|
+
when :noop then Noop
|
104
|
+
when :deep then Deep
|
105
|
+
when :flat then Flat
|
109
106
|
else
|
110
107
|
raise UnknownFreezerError, "Freezer with name #{name.inspect} is unknown"
|
111
108
|
end
|
@@ -126,14 +123,10 @@ module Adamantium
|
|
126
123
|
#
|
127
124
|
def self.parse(options)
|
128
125
|
keys = options.keys - [:freezer]
|
129
|
-
|
130
126
|
unless keys.empty?
|
131
127
|
raise OptionError, "Unknown option key(s) for memoizer #{keys.inspect}"
|
132
128
|
end
|
133
|
-
|
134
|
-
return unless options.key?(:freezer)
|
135
|
-
|
136
|
-
get(options.fetch(:freezer))
|
129
|
+
get(options.fetch(:freezer)) if options.key?(:freezer)
|
137
130
|
end
|
138
131
|
end
|
139
132
|
end
|
@@ -79,9 +79,9 @@ module Adamantium
|
|
79
79
|
def define_memoize_method(method, freezer)
|
80
80
|
method_name = method.name.to_sym
|
81
81
|
undef_method(method_name)
|
82
|
-
define_method(method_name) do
|
82
|
+
define_method(method_name) do ||
|
83
83
|
memory.fetch(method_name) do
|
84
|
-
value = method.bind(self).call
|
84
|
+
value = method.bind(self).call
|
85
85
|
frozen = freezer.call(value)
|
86
86
|
store_memory(method_name, frozen)
|
87
87
|
end
|
data/lib/adamantium/version.rb
CHANGED
@@ -13,31 +13,12 @@ shared_examples_for 'memoizes method' do
|
|
13
13
|
it 'creates a method that returns a same value' do
|
14
14
|
subject
|
15
15
|
instance = object.new
|
16
|
-
|
17
|
-
second = instance.send(method)
|
18
|
-
first.should be(second)
|
16
|
+
instance.send(method).should be(instance.send(method))
|
19
17
|
end
|
20
18
|
|
21
|
-
|
19
|
+
it 'creates a method with an arity of 0' do
|
22
20
|
subject
|
23
|
-
|
24
|
-
file, line = object.new.send(method).first.split(':')[0, 2]
|
25
|
-
File.expand_path(file).should eql(File.expand_path('../../../../../lib/adamantium/module_methods.rb', __FILE__))
|
26
|
-
line.to_i.should eql(84)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
it 'sets the file and line number properly' do
|
31
|
-
# Exclude example for methot that does not return caller
|
32
|
-
if method == :some_method
|
33
|
-
return
|
34
|
-
end
|
35
|
-
|
36
|
-
if RUBY_PLATFORM.include?('java')
|
37
|
-
pending('Kernel#caller returns the incorrect line number in JRuby', &specification)
|
38
|
-
else
|
39
|
-
instance_eval(&specification)
|
40
|
-
end
|
21
|
+
object.new.method(method).arity.should be_zero
|
41
22
|
end
|
42
23
|
|
43
24
|
context 'when the initializer calls the memoized method' do
|
@@ -60,6 +41,7 @@ end
|
|
60
41
|
|
61
42
|
describe Adamantium::ModuleMethods, '#memoize' do
|
62
43
|
subject { object.memoize(method, options) }
|
44
|
+
|
63
45
|
let(:options) { {} }
|
64
46
|
|
65
47
|
let(:object) do
|
@@ -69,7 +51,7 @@ describe Adamantium::ModuleMethods, '#memoize' do
|
|
69
51
|
end
|
70
52
|
end
|
71
53
|
end
|
72
|
-
|
54
|
+
|
73
55
|
context 'on method with arguments' do
|
74
56
|
let(:method) { :argumented }
|
75
57
|
|
data/tasks/metrics/ci.rake
CHANGED
@@ -5,5 +5,5 @@ task :ci => %w[ ci:metrics metrics:heckle ]
|
|
5
5
|
|
6
6
|
namespace :ci do
|
7
7
|
desc 'Run metrics (except heckle) and spec'
|
8
|
-
task :metrics => %w[ spec metrics:verify_measurements metrics:flog metrics:flay metrics:
|
8
|
+
task :metrics => %w[ spec metrics:verify_measurements metrics:flog metrics:flay metrics:roodi metrics:all ]
|
9
9
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: adamantium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Dan Kubb
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-
|
19
|
+
date: 2013-02-16 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: backports
|
@@ -26,12 +26,12 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
hash:
|
29
|
+
hash: 43
|
30
30
|
segments:
|
31
31
|
- 2
|
32
|
-
-
|
33
|
-
-
|
34
|
-
version: 2.
|
32
|
+
- 8
|
33
|
+
- 2
|
34
|
+
version: 2.8.2
|
35
35
|
type: :runtime
|
36
36
|
version_requirements: *id001
|
37
37
|
- !ruby/object:Gem::Dependency
|
@@ -42,12 +42,12 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
hash:
|
45
|
+
hash: 3
|
46
46
|
segments:
|
47
47
|
- 0
|
48
|
-
-
|
48
|
+
- 7
|
49
49
|
- 0
|
50
|
-
version: 0.
|
50
|
+
version: 0.7.0
|
51
51
|
type: :runtime
|
52
52
|
version_requirements: *id002
|
53
53
|
- !ruby/object:Gem::Dependency
|
@@ -90,12 +90,13 @@ dependencies:
|
|
90
90
|
requirements:
|
91
91
|
- - ~>
|
92
92
|
- !ruby/object:Gem::Version
|
93
|
-
hash:
|
93
|
+
hash: 29
|
94
94
|
segments:
|
95
95
|
- 0
|
96
96
|
- 8
|
97
|
-
-
|
98
|
-
|
97
|
+
- 4
|
98
|
+
- 1
|
99
|
+
version: 0.8.4.1
|
99
100
|
type: :development
|
100
101
|
version_requirements: *id005
|
101
102
|
description: Immutable extensions to objects
|
@@ -162,7 +163,6 @@ files:
|
|
162
163
|
- tasks/metrics/flog.rake
|
163
164
|
- tasks/metrics/heckle.rake
|
164
165
|
- tasks/metrics/metric_fu.rake
|
165
|
-
- tasks/metrics/reek.rake
|
166
166
|
- tasks/metrics/roodi.rake
|
167
167
|
- tasks/metrics/yardstick.rake
|
168
168
|
- tasks/spec.rake
|
@@ -196,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
196
196
|
requirements: []
|
197
197
|
|
198
198
|
rubyforge_project:
|
199
|
-
rubygems_version: 1.8.
|
199
|
+
rubygems_version: 1.8.25
|
200
200
|
signing_key:
|
201
201
|
specification_version: 3
|
202
202
|
summary: Immutable extensions to objects
|
data/tasks/metrics/reek.rake
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'reek/rake/task'
|
5
|
-
|
6
|
-
RBX_18_MODE = RUBY_VERSION < '1.9' && defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
7
|
-
|
8
|
-
namespace :metrics do
|
9
|
-
Reek::Rake::Task.new do |t|
|
10
|
-
# reek has some problems under rbx in 1.8 mode that cause the underlying
|
11
|
-
# script to raise an exception. Rather than halt the "rake ci" process due
|
12
|
-
# to one bug, we choose to ignore it in this specific case until reek can be
|
13
|
-
# fixed.
|
14
|
-
t.fail_on_error = ! RBX_18_MODE # always true, except under rbx 18 mode
|
15
|
-
end
|
16
|
-
end
|
17
|
-
rescue LoadError
|
18
|
-
task :reek do
|
19
|
-
$stderr.puts 'Reek is not available. In order to run reek, you must: gem install reek'
|
20
|
-
end
|
21
|
-
end
|