rom 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 Version](https://badge.fury.io/rb/rom.png)][gem]
|
4
|
+
[![Build Status](https://travis-ci.org/rom-rb/rom.png?branch=master)][travis]
|
5
|
+
[![Dependency Status](https://gemnasium.com/rom-rb/rom.png)][gemnasium]
|
6
|
+
[![Code Climate](https://codeclimate.com/github/rom-rb/rom.png)][codeclimate]
|
7
|
+
[![Coverage Status](https://coveralls.io/repos/rom-rb/rom/badge.png?branch=master)][coveralls]
|
8
|
+
[![Inline docs](http://inch-pages.github.io/github/rom-rb/rom.png)][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
|