rom 0.1.2 → 0.2.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/.rspec +2 -0
- data/.travis.yml +22 -0
- data/Changelog.md +16 -0
- data/Gemfile +13 -6
- data/Gemfile.devtools +71 -0
- data/Guardfile +19 -0
- data/LICENSE +1 -1
- data/README.md +52 -30
- data/Rakefile +3 -0
- data/config/devtools.yml +4 -0
- data/config/flay.yml +3 -0
- data/config/flog.yml +2 -0
- data/config/mutant.yml +5 -0
- data/config/reek.yml +103 -0
- data/config/rubocop.yml +62 -0
- data/config/yardstick.yml +2 -0
- data/lib/rom.rb +13 -5
- data/lib/rom/constants.rb +16 -0
- data/lib/rom/environment.rb +105 -0
- data/lib/rom/environment/builder.rb +71 -0
- data/lib/rom/mapper.rb +176 -0
- data/lib/rom/mapper/attribute.rb +108 -0
- data/lib/rom/mapper/builder.rb +58 -0
- data/lib/rom/mapper/builder/definition.rb +162 -0
- data/lib/rom/mapper/header.rb +103 -0
- data/lib/rom/mapper/loader_builder.rb +26 -0
- data/lib/rom/relation.rb +375 -0
- data/lib/rom/repository.rb +71 -0
- data/lib/rom/schema.rb +21 -0
- data/lib/rom/schema/builder.rb +59 -0
- data/lib/rom/schema/definition.rb +84 -0
- data/lib/rom/schema/definition/relation.rb +80 -0
- data/lib/rom/schema/definition/relation/base.rb +27 -0
- data/lib/rom/session.rb +111 -0
- data/lib/rom/session/environment.rb +67 -0
- data/lib/rom/session/identity_map.rb +43 -0
- data/lib/rom/session/mapper.rb +62 -0
- data/lib/rom/session/relation.rb +140 -0
- data/lib/rom/session/state.rb +59 -0
- data/lib/rom/session/state/created.rb +22 -0
- data/lib/rom/session/state/deleted.rb +25 -0
- data/lib/rom/session/state/persisted.rb +34 -0
- data/lib/rom/session/state/transient.rb +20 -0
- data/lib/rom/session/state/updated.rb +29 -0
- data/lib/rom/session/tracker.rb +62 -0
- data/lib/rom/support/axiom/adapter.rb +111 -0
- data/lib/rom/support/axiom/adapter/data_objects.rb +38 -0
- data/lib/rom/support/axiom/adapter/memory.rb +25 -0
- data/lib/rom/support/axiom/adapter/postgres.rb +19 -0
- data/lib/rom/support/axiom/adapter/sqlite3.rb +20 -0
- data/lib/version.rb +1 -1
- data/rom.gemspec +7 -3
- data/spec/integration/environment_setup_spec.rb +24 -0
- data/spec/integration/grouped_mappers_spec.rb +87 -0
- data/spec/integration/join_and_group_spec.rb +76 -0
- data/spec/integration/join_and_wrap_spec.rb +68 -0
- data/spec/integration/mapping_embedded_relations_spec.rb +73 -0
- data/spec/integration/mapping_relations_spec.rb +120 -0
- data/spec/integration/schema_definition_spec.rb +152 -0
- data/spec/integration/session_spec.rb +87 -0
- data/spec/integration/wrapped_mappers_spec.rb +73 -0
- data/spec/shared/unit/environment_context.rb +6 -0
- data/spec/shared/unit/loader.rb +11 -0
- data/spec/shared/unit/loader_identity.rb +13 -0
- data/spec/shared/unit/mapper_context.rb +11 -0
- data/spec/shared/unit/relation_context.rb +82 -0
- data/spec/shared/unit/session_environment_context.rb +11 -0
- data/spec/shared/unit/session_relation_context.rb +18 -0
- data/spec/spec_helper.rb +49 -0
- data/spec/support/helper.rb +34 -0
- data/spec/support/ice_nine_config.rb +10 -0
- data/spec/support/test_mapper.rb +110 -0
- data/spec/unit/rom/environment/builder/mapping_spec.rb +24 -0
- data/spec/unit/rom/environment/builder/schema_spec.rb +33 -0
- data/spec/unit/rom/environment/class_methods/setup_spec.rb +18 -0
- data/spec/unit/rom/environment/repository_spec.rb +21 -0
- data/spec/unit/rom/mapper/attribute/embedded_collection/to_ast_spec.rb +18 -0
- data/spec/unit/rom/mapper/attribute/embedded_value/to_ast_spec.rb +16 -0
- data/spec/unit/rom/mapper/attribute/rename_spec.rb +9 -0
- data/spec/unit/rom/mapper/attribute/to_ast_spec.rb +9 -0
- data/spec/unit/rom/mapper/builder/class_methods/call_spec.rb +61 -0
- data/spec/unit/rom/mapper/class_methods/build_spec.rb +55 -0
- data/spec/unit/rom/mapper/dump_spec.rb +11 -0
- data/spec/unit/rom/mapper/group_spec.rb +35 -0
- data/spec/unit/rom/mapper/header/each_spec.rb +26 -0
- data/spec/unit/rom/mapper/header/element_reader_spec.rb +21 -0
- data/spec/unit/rom/mapper/header/group_spec.rb +18 -0
- data/spec/unit/rom/mapper/header/join_spec.rb +14 -0
- data/spec/unit/rom/mapper/header/keys_spec.rb +29 -0
- data/spec/unit/rom/mapper/header/project_spec.rb +13 -0
- data/spec/unit/rom/mapper/header/rename_spec.rb +11 -0
- data/spec/unit/rom/mapper/header/to_ast_spec.rb +11 -0
- data/spec/unit/rom/mapper/header/wrap_spec.rb +18 -0
- data/spec/unit/rom/mapper/identity_from_tuple_spec.rb +11 -0
- data/spec/unit/rom/mapper/identity_spec.rb +11 -0
- data/spec/unit/rom/mapper/join_spec.rb +15 -0
- data/spec/unit/rom/mapper/load_spec.rb +11 -0
- data/spec/unit/rom/mapper/new_object_spec.rb +14 -0
- data/spec/unit/rom/mapper/project_spec.rb +11 -0
- data/spec/unit/rom/mapper/rename_spec.rb +16 -0
- data/spec/unit/rom/mapper/wrap_spec.rb +35 -0
- data/spec/unit/rom/relation/delete_spec.rb +15 -0
- data/spec/unit/rom/relation/drop_spec.rb +11 -0
- data/spec/unit/rom/relation/each_spec.rb +23 -0
- data/spec/unit/rom/relation/first_spec.rb +19 -0
- data/spec/unit/rom/relation/group_spec.rb +29 -0
- data/spec/unit/rom/relation/inject_mapper_spec.rb +17 -0
- data/spec/unit/rom/relation/insert_spec.rb +13 -0
- data/spec/unit/rom/relation/last_spec.rb +19 -0
- data/spec/unit/rom/relation/one_spec.rb +49 -0
- data/spec/unit/rom/relation/rename_spec.rb +21 -0
- data/spec/unit/rom/relation/replace_spec.rb +13 -0
- data/spec/unit/rom/relation/restrict_spec.rb +25 -0
- data/spec/unit/rom/relation/sort_by_spec.rb +25 -0
- data/spec/unit/rom/relation/take_spec.rb +11 -0
- data/spec/unit/rom/relation/to_a_spec.rb +20 -0
- data/spec/unit/rom/relation/update_spec.rb +25 -0
- data/spec/unit/rom/relation/wrap_spec.rb +29 -0
- data/spec/unit/rom/repository/class_methods/build_spec.rb +27 -0
- data/spec/unit/rom/repository/element_reader_spec.rb +21 -0
- data/spec/unit/rom/repository/element_writer_spec.rb +18 -0
- data/spec/unit/rom/schema/builder/class_methods/build_spec.rb +103 -0
- data/spec/unit/rom/schema/element_reader_spec.rb +15 -0
- data/spec/unit/rom/session/class_methods/start_spec.rb +23 -0
- data/spec/unit/rom/session/clean_predicate_spec.rb +21 -0
- data/spec/unit/rom/session/environment/element_reader_spec.rb +13 -0
- data/spec/unit/rom/session/flush_spec.rb +58 -0
- data/spec/unit/rom/session/mapper/load_spec.rb +47 -0
- data/spec/unit/rom/session/relation/delete_spec.rb +28 -0
- data/spec/unit/rom/session/relation/dirty_predicate_spec.rb +35 -0
- data/spec/unit/rom/session/relation/identity_spec.rb +11 -0
- data/spec/unit/rom/session/relation/new_spec.rb +50 -0
- data/spec/unit/rom/session/relation/save_spec.rb +50 -0
- data/spec/unit/rom/session/relation/state_spec.rb +23 -0
- data/spec/unit/rom/session/relation/track_spec.rb +23 -0
- data/spec/unit/rom/session/relation/tracking_predicate_spec.rb +23 -0
- data/spec/unit/rom/session/relation/update_attributes_spec.rb +45 -0
- data/spec/unit/rom/session/state_spec.rb +79 -0
- metadata +212 -11
data/.rspec
ADDED
data/.travis.yml
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
language: ruby
|
|
2
|
+
bundler_args: --without yard guard benchmarks
|
|
3
|
+
script: "bundle exec rake metrics:coverage"
|
|
4
|
+
rvm:
|
|
5
|
+
- 1.9.3
|
|
6
|
+
- 2.0.0
|
|
7
|
+
- 2.1.1
|
|
8
|
+
- rbx
|
|
9
|
+
- jruby
|
|
10
|
+
- ruby-head
|
|
11
|
+
matrix:
|
|
12
|
+
allow_failures:
|
|
13
|
+
- rvm: ruby-head
|
|
14
|
+
notifications:
|
|
15
|
+
irc:
|
|
16
|
+
channels:
|
|
17
|
+
- "irc.freenode.org#rom-rb"
|
|
18
|
+
on_success: never
|
|
19
|
+
on_failure: change
|
|
20
|
+
email:
|
|
21
|
+
on_success: never
|
|
22
|
+
on_failure: change
|
data/Changelog.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
# v0.2.0 2014-04-06
|
|
2
|
+
|
|
3
|
+
* [BREAKING] rom-relation, rom-mapper and rom-session were merged into rom project (solnic)
|
|
4
|
+
* [BREAKING] changed mapping DSL (users do...end => relation(:users) do...end) (solnic)
|
|
5
|
+
* [BREAKING] added :from option to mapping DSL which replaced :to (solnic)
|
|
6
|
+
* [feature] added :rename option to schema attribute DSL (solnic)
|
|
7
|
+
* [feature] added support for join, group, wrap, project and rename operations (solnic)
|
|
8
|
+
* [feature] added support for setting domain object loading strategy (solnic)
|
|
9
|
+
* [feature] Environment.setup can be used with a block to define schema and mapping (solnic)
|
|
10
|
+
* [feature] added public interface for building mappers (see Mapper.build) (solnic)
|
|
11
|
+
* [feature] added support for mapping embedded objects using wrap/group (solnic)
|
|
12
|
+
* [feature] environment exposes mapper registry via Environment#mappers (solnic)
|
|
13
|
+
* [internal] mappers are now backed by [morpher](https://github.com/mbj/morpher) (solnic)
|
|
14
|
+
* [internal] renaming and optimizing relations happens on the schema level now (solnic)
|
|
15
|
+
* [internal] environment will raise if unknown relation is referenced via Environment#[] (solnic)
|
|
16
|
+
|
|
1
17
|
# v0.1.2 2013-09-02
|
|
2
18
|
|
|
3
19
|
* [updated] [rom-relation](https://github.com/rom-rb/rom-relation/blob/v0.1.2/Changelog.md#v012-2013-09-02)
|
data/Gemfile
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
source 'https://rubygems.org'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
gemspec
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
gem '
|
|
7
|
-
gem '
|
|
5
|
+
group :test do
|
|
6
|
+
gem 'axiom-memory-adapter', '~> 0.2'
|
|
7
|
+
gem 'bogus', '~> 0.1'
|
|
8
|
+
gem 'rubysl-bigdecimal', :platforms => :rbx
|
|
9
|
+
end
|
|
8
10
|
|
|
9
11
|
group :benchmarks do
|
|
10
|
-
gem '
|
|
11
|
-
gem 'axiom-memory-adapter'
|
|
12
|
+
gem 'perftools.rb'
|
|
12
13
|
end
|
|
14
|
+
|
|
15
|
+
gem 'devtools', git: 'https://github.com/rom-rb/devtools.git', branch: 'master'
|
|
16
|
+
gem 'morpher', git: 'https://github.com/mbj/morpher.git', branch: 'master'
|
|
17
|
+
|
|
18
|
+
# Added by devtools
|
|
19
|
+
eval_gemfile 'Gemfile.devtools'
|
data/Gemfile.devtools
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
group :development do
|
|
4
|
+
gem 'rake', '~> 10.2.1'
|
|
5
|
+
gem 'rspec', '~> 2.14.1'
|
|
6
|
+
gem 'rspec-core', '~> 2.14.8'
|
|
7
|
+
gem 'yard', '~> 0.8.7.4'
|
|
8
|
+
|
|
9
|
+
platform :rbx do
|
|
10
|
+
gem 'rubysl-singleton', '~> 2.0.0'
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
group :yard do
|
|
15
|
+
gem 'kramdown', '~> 1.3.3'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
group :guard do
|
|
19
|
+
gem 'guard', '~> 2.6.0'
|
|
20
|
+
gem 'guard-bundler', '~> 2.0.0'
|
|
21
|
+
gem 'guard-rspec', '~> 4.2.8'
|
|
22
|
+
gem 'guard-rubocop', '~> 1.0.2'
|
|
23
|
+
|
|
24
|
+
# file system change event handling
|
|
25
|
+
gem 'listen', '~> 2.7.1'
|
|
26
|
+
gem 'rb-fchange', '~> 0.0.6', require: false
|
|
27
|
+
gem 'rb-fsevent', '~> 0.9.4', require: false
|
|
28
|
+
gem 'rb-inotify', '~> 0.9.3', require: false
|
|
29
|
+
|
|
30
|
+
# notification handling
|
|
31
|
+
gem 'libnotify', '~> 0.8.2', require: false
|
|
32
|
+
gem 'rb-notifu', '~> 0.0.4', require: false
|
|
33
|
+
gem 'terminal-notifier-guard', '~> 1.5.3', require: false
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
group :metrics do
|
|
37
|
+
gem 'coveralls', '~> 0.7.0'
|
|
38
|
+
gem 'flay', '~> 2.4.0'
|
|
39
|
+
gem 'flog', '~> 4.2.0'
|
|
40
|
+
gem 'reek', '~> 1.3.7'
|
|
41
|
+
gem 'rubocop', '~> 0.19.1'
|
|
42
|
+
gem 'simplecov', '~> 0.8.2'
|
|
43
|
+
gem 'yardstick', '~> 0.9.9'
|
|
44
|
+
|
|
45
|
+
platforms :mri do
|
|
46
|
+
gem 'mutant', '~> 0.5.9'
|
|
47
|
+
gem 'mutant-rspec', '~> 0.5.3'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
platforms :ruby_19, :ruby_20 do
|
|
51
|
+
gem 'yard-spellcheck', '~> 0.1.5'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
platform :rbx do
|
|
55
|
+
gem 'json', '~> 1.8.1'
|
|
56
|
+
gem 'racc', '~> 1.4.11'
|
|
57
|
+
gem 'rubysl-logger', '~> 2.0.0'
|
|
58
|
+
gem 'rubysl-open-uri', '~> 2.0.0'
|
|
59
|
+
gem 'rubysl-prettyprint', '~> 2.0.3'
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
group :benchmarks do
|
|
64
|
+
gem 'rbench', '~> 0.2.3'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
platform :jruby do
|
|
68
|
+
group :jruby do
|
|
69
|
+
gem 'jruby-openssl', '~> 0.8.5'
|
|
70
|
+
end
|
|
71
|
+
end
|
data/Guardfile
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
guard :rspec do
|
|
2
|
+
#run all specs if configuration is modified
|
|
3
|
+
watch('Guardfile') { 'spec' }
|
|
4
|
+
watch('Gemfile.lock') { 'spec' }
|
|
5
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
|
6
|
+
|
|
7
|
+
# run all specs if supporting files files are modified
|
|
8
|
+
watch(%r{\Aspec/(?:lib|support|shared)/.+\.rb\z}) { 'spec' }
|
|
9
|
+
|
|
10
|
+
# run unit specs if associated lib code is modified
|
|
11
|
+
watch(%r{\Alib/(.+)\.rb\z}) { |m| Dir["spec/unit/#{m[1]}"] }
|
|
12
|
+
watch(%r{\Alib/(.+)/support/(.+)\.rb\z}) { |m| Dir["spec/unit/#{m[1]}/#{m[2]}"] }
|
|
13
|
+
watch("lib/#{File.basename(File.expand_path('../', __FILE__))}.rb") { 'spec' }
|
|
14
|
+
|
|
15
|
+
# run a spec if it is modified
|
|
16
|
+
watch(%r{\Aspec/(?:unit|integration)/.+_spec\.rb\z})
|
|
17
|
+
|
|
18
|
+
notification :tmux, :display_message => true
|
|
19
|
+
end
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
# Ruby Object Mapper
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
[][gem]
|
|
4
|
+
[][travis]
|
|
5
|
+
[][gemnasium]
|
|
6
|
+
[][codeclimate]
|
|
7
|
+
[][coveralls]
|
|
8
|
+
[][inchpages]
|
|
9
|
+
|
|
10
|
+
[gem]: https://rubygems.org/gems/rom
|
|
11
|
+
[travis]: https://travis-ci.org/rom-rb/rom
|
|
12
|
+
[gemnasium]: https://gemnasium.com/rom-rb/rom
|
|
13
|
+
[codeclimate]: https://codeclimate.com/github/rom-rb/rom
|
|
14
|
+
[coveralls]: https://coveralls.io/r/rom-rb/rom
|
|
15
|
+
[inchpages]: http://inch-pages.github.io/github/rom-rb/rom/
|
|
16
|
+
|
|
17
|
+
Ruby Object Mapper is an implementation of [the Data Mapper](http://martinfowler.com/eaaCatalog/dataMapper.html)
|
|
18
|
+
pattern in Ruby language. It consists of multiple loosely coupled pieces and uses
|
|
19
|
+
a powerful relational algebra library called [axiom](https://github.com/dkubb/axiom).
|
|
8
20
|
|
|
9
21
|
## Getting started
|
|
10
22
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
```ruby
|
|
14
|
-
require 'rom'
|
|
15
|
-
|
|
16
|
-
env = ROM::Environment.setup(memory: 'memory://test')
|
|
23
|
+
Currently the setup is a bit verbose. Automatization will come in the future once
|
|
24
|
+
the API becomes stable.
|
|
17
25
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
repository :memory
|
|
21
|
-
|
|
22
|
-
attribute :id, Integer
|
|
23
|
-
attribute :name, String
|
|
24
|
-
|
|
25
|
-
key :id
|
|
26
|
-
end
|
|
27
|
-
end
|
|
26
|
+
```
|
|
27
|
+
gem install rom axiom-memory-adapter
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
###
|
|
30
|
+
### 1. Set up environment and define schema with mappings
|
|
31
31
|
|
|
32
32
|
```ruby
|
|
33
|
+
require 'rom'
|
|
34
|
+
require 'axiom-memory-adapter'
|
|
35
|
+
|
|
33
36
|
class User
|
|
34
37
|
attr_reader :id, :name
|
|
35
38
|
|
|
@@ -38,25 +41,44 @@ This is a meta-project grouping pieces of ROM's default stack:
|
|
|
38
41
|
end
|
|
39
42
|
end
|
|
40
43
|
|
|
41
|
-
env.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
env = ROM::Environment.setup(memory: 'memory://test') do
|
|
45
|
+
schema do
|
|
46
|
+
base_relation :users do
|
|
47
|
+
repository :memory
|
|
48
|
+
|
|
49
|
+
attribute :id, Integer
|
|
50
|
+
attribute :name, String
|
|
51
|
+
|
|
52
|
+
key :id
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
mapping do
|
|
57
|
+
relation(:users) do
|
|
58
|
+
map :id, :name
|
|
59
|
+
model User
|
|
60
|
+
end
|
|
45
61
|
end
|
|
46
62
|
end
|
|
47
63
|
```
|
|
48
64
|
|
|
49
|
-
###
|
|
65
|
+
### 2. Work with Plain Old Ruby Objects
|
|
50
66
|
|
|
51
67
|
```ruby
|
|
52
68
|
env.session do |session|
|
|
53
|
-
session[:users].
|
|
54
|
-
session.
|
|
69
|
+
user = session[:users].new(id: 1, name: 'Jane')
|
|
70
|
+
session[:users].save(user)
|
|
71
|
+
session.flush
|
|
55
72
|
end
|
|
56
73
|
|
|
57
74
|
jane = env[:users].restrict(name: 'Jane').one
|
|
58
75
|
```
|
|
59
76
|
|
|
77
|
+
## Community
|
|
78
|
+
|
|
79
|
+
* #rom-rb channel on freenode
|
|
80
|
+
* [Ruby Object Mapper](https://groups.google.com/forum/#!forum/rom-rb) mailing list
|
|
81
|
+
|
|
60
82
|
## Authors
|
|
61
83
|
|
|
62
84
|
* [Dan Kubb](https://github.com/dkubb)
|
|
@@ -64,6 +86,6 @@ This is a meta-project grouping pieces of ROM's default stack:
|
|
|
64
86
|
* [Martin Gamsjaeger](https://github.com/snusnu)
|
|
65
87
|
* [Piotr Solnica](https://github.com/solnic)
|
|
66
88
|
|
|
67
|
-
##
|
|
89
|
+
## License
|
|
68
90
|
|
|
69
91
|
See `LICENSE` file.
|
data/Rakefile
ADDED
data/config/devtools.yml
ADDED
data/config/flay.yml
ADDED
data/config/flog.yml
ADDED
data/config/mutant.yml
ADDED
data/config/reek.yml
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
Attribute:
|
|
3
|
+
enabled: true
|
|
4
|
+
exclude: []
|
|
5
|
+
BooleanParameter:
|
|
6
|
+
enabled: true
|
|
7
|
+
exclude: []
|
|
8
|
+
ClassVariable:
|
|
9
|
+
enabled: true
|
|
10
|
+
exclude: []
|
|
11
|
+
ControlParameter:
|
|
12
|
+
enabled: true
|
|
13
|
+
exclude: []
|
|
14
|
+
DataClump:
|
|
15
|
+
enabled: true
|
|
16
|
+
exclude: []
|
|
17
|
+
max_copies: 2
|
|
18
|
+
min_clump_size: 2
|
|
19
|
+
DuplicateMethodCall:
|
|
20
|
+
enabled: true
|
|
21
|
+
exclude: []
|
|
22
|
+
max_calls: 1
|
|
23
|
+
allow_calls: []
|
|
24
|
+
FeatureEnvy:
|
|
25
|
+
enabled: true
|
|
26
|
+
exclude: []
|
|
27
|
+
IrresponsibleModule:
|
|
28
|
+
enabled: true
|
|
29
|
+
exclude: []
|
|
30
|
+
LongParameterList:
|
|
31
|
+
enabled: true
|
|
32
|
+
exclude: []
|
|
33
|
+
max_params: 2
|
|
34
|
+
overrides:
|
|
35
|
+
initialize:
|
|
36
|
+
max_params: 3
|
|
37
|
+
LongYieldList:
|
|
38
|
+
enabled: true
|
|
39
|
+
exclude: []
|
|
40
|
+
max_params: 2
|
|
41
|
+
NestedIterators:
|
|
42
|
+
enabled: true
|
|
43
|
+
exclude: []
|
|
44
|
+
max_allowed_nesting: 1
|
|
45
|
+
ignore_iterators: []
|
|
46
|
+
NilCheck:
|
|
47
|
+
enabled: true
|
|
48
|
+
exclude: []
|
|
49
|
+
RepeatedConditional:
|
|
50
|
+
enabled: true
|
|
51
|
+
exclude: []
|
|
52
|
+
max_ifs: 1
|
|
53
|
+
TooManyInstanceVariables:
|
|
54
|
+
enabled: true
|
|
55
|
+
exclude: []
|
|
56
|
+
max_instance_variables: 3
|
|
57
|
+
TooManyMethods:
|
|
58
|
+
enabled: true
|
|
59
|
+
exclude: []
|
|
60
|
+
max_methods: 10
|
|
61
|
+
TooManyStatements:
|
|
62
|
+
enabled: true
|
|
63
|
+
exclude:
|
|
64
|
+
- each
|
|
65
|
+
max_statements: 2
|
|
66
|
+
UncommunicativeMethodName:
|
|
67
|
+
enabled: true
|
|
68
|
+
exclude: []
|
|
69
|
+
reject:
|
|
70
|
+
- !ruby/regexp /^[a-z]$/
|
|
71
|
+
- !ruby/regexp /[0-9]$/
|
|
72
|
+
- !ruby/regexp /[A-Z]/
|
|
73
|
+
accept: []
|
|
74
|
+
UncommunicativeModuleName:
|
|
75
|
+
enabled: true
|
|
76
|
+
exclude: []
|
|
77
|
+
reject:
|
|
78
|
+
- !ruby/regexp /^.$/
|
|
79
|
+
- !ruby/regexp /[0-9]$/
|
|
80
|
+
accept: []
|
|
81
|
+
UncommunicativeParameterName:
|
|
82
|
+
enabled: true
|
|
83
|
+
exclude: []
|
|
84
|
+
reject:
|
|
85
|
+
- !ruby/regexp /^.$/
|
|
86
|
+
- !ruby/regexp /[0-9]$/
|
|
87
|
+
- !ruby/regexp /[A-Z]/
|
|
88
|
+
accept: []
|
|
89
|
+
UncommunicativeVariableName:
|
|
90
|
+
enabled: true
|
|
91
|
+
exclude: []
|
|
92
|
+
reject:
|
|
93
|
+
- !ruby/regexp /^.$/
|
|
94
|
+
- !ruby/regexp /[0-9]$/
|
|
95
|
+
- !ruby/regexp /[A-Z]/
|
|
96
|
+
accept: []
|
|
97
|
+
UnusedParameters:
|
|
98
|
+
enabled: true
|
|
99
|
+
exclude: []
|
|
100
|
+
UtilityFunction:
|
|
101
|
+
enabled: true
|
|
102
|
+
exclude: []
|
|
103
|
+
max_helper_calls: 0
|
data/config/rubocop.yml
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
AllCops:
|
|
2
|
+
Includes:
|
|
3
|
+
- '**/*.rake'
|
|
4
|
+
- 'Gemfile'
|
|
5
|
+
- 'Gemfile.devtools'
|
|
6
|
+
Excludes:
|
|
7
|
+
- '**/vendor/**'
|
|
8
|
+
- '**/benchmarks/**'
|
|
9
|
+
|
|
10
|
+
# Avoid parameter lists longer than five parameters.
|
|
11
|
+
ParameterLists:
|
|
12
|
+
Max: 3
|
|
13
|
+
CountKeywordArgs: true
|
|
14
|
+
|
|
15
|
+
# Avoid more than `Max` levels of nesting.
|
|
16
|
+
BlockNesting:
|
|
17
|
+
Max: 3
|
|
18
|
+
|
|
19
|
+
# Align with the style guide.
|
|
20
|
+
CollectionMethods:
|
|
21
|
+
PreferredMethods:
|
|
22
|
+
collect: 'map'
|
|
23
|
+
inject: 'reduce'
|
|
24
|
+
find: 'detect'
|
|
25
|
+
find_all: 'select'
|
|
26
|
+
|
|
27
|
+
# Do not force public/protected/private keyword to be indented at the same
|
|
28
|
+
# level as the def keyword. My personal preference is to outdent these keywords
|
|
29
|
+
# because I think when scanning code it makes it easier to identify the
|
|
30
|
+
# sections of code and visually separate them. When the keyword is at the same
|
|
31
|
+
# level I think it sort of blends in with the def keywords and makes it harder
|
|
32
|
+
# to scan the code and see where the sections are.
|
|
33
|
+
AccessModifierIndentation:
|
|
34
|
+
Enabled: false
|
|
35
|
+
|
|
36
|
+
# Limit line length
|
|
37
|
+
LineLength:
|
|
38
|
+
Max: 79
|
|
39
|
+
|
|
40
|
+
# Disable documentation checking until a class needs to be documented once
|
|
41
|
+
Documentation:
|
|
42
|
+
Enabled: false
|
|
43
|
+
|
|
44
|
+
# Do not favor modifier if/unless usage when you have a single-line body
|
|
45
|
+
IfUnlessModifier:
|
|
46
|
+
Enabled: false
|
|
47
|
+
|
|
48
|
+
# Allow case equality operator (in limited use within the specs)
|
|
49
|
+
CaseEquality:
|
|
50
|
+
Enabled: false
|
|
51
|
+
|
|
52
|
+
# Constants do not always have to use SCREAMING_SNAKE_CASE
|
|
53
|
+
ConstantName:
|
|
54
|
+
Enabled: false
|
|
55
|
+
|
|
56
|
+
# Not all trivial readers/writers can be defined with attr_* methods
|
|
57
|
+
TrivialAccessors:
|
|
58
|
+
Enabled: false
|
|
59
|
+
|
|
60
|
+
# Allow empty lines around body
|
|
61
|
+
EmptyLinesAroundBody:
|
|
62
|
+
Enabled: false
|