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.
Files changed (139) hide show
  1. data/.rspec +2 -0
  2. data/.travis.yml +22 -0
  3. data/Changelog.md +16 -0
  4. data/Gemfile +13 -6
  5. data/Gemfile.devtools +71 -0
  6. data/Guardfile +19 -0
  7. data/LICENSE +1 -1
  8. data/README.md +52 -30
  9. data/Rakefile +3 -0
  10. data/config/devtools.yml +4 -0
  11. data/config/flay.yml +3 -0
  12. data/config/flog.yml +2 -0
  13. data/config/mutant.yml +5 -0
  14. data/config/reek.yml +103 -0
  15. data/config/rubocop.yml +62 -0
  16. data/config/yardstick.yml +2 -0
  17. data/lib/rom.rb +13 -5
  18. data/lib/rom/constants.rb +16 -0
  19. data/lib/rom/environment.rb +105 -0
  20. data/lib/rom/environment/builder.rb +71 -0
  21. data/lib/rom/mapper.rb +176 -0
  22. data/lib/rom/mapper/attribute.rb +108 -0
  23. data/lib/rom/mapper/builder.rb +58 -0
  24. data/lib/rom/mapper/builder/definition.rb +162 -0
  25. data/lib/rom/mapper/header.rb +103 -0
  26. data/lib/rom/mapper/loader_builder.rb +26 -0
  27. data/lib/rom/relation.rb +375 -0
  28. data/lib/rom/repository.rb +71 -0
  29. data/lib/rom/schema.rb +21 -0
  30. data/lib/rom/schema/builder.rb +59 -0
  31. data/lib/rom/schema/definition.rb +84 -0
  32. data/lib/rom/schema/definition/relation.rb +80 -0
  33. data/lib/rom/schema/definition/relation/base.rb +27 -0
  34. data/lib/rom/session.rb +111 -0
  35. data/lib/rom/session/environment.rb +67 -0
  36. data/lib/rom/session/identity_map.rb +43 -0
  37. data/lib/rom/session/mapper.rb +62 -0
  38. data/lib/rom/session/relation.rb +140 -0
  39. data/lib/rom/session/state.rb +59 -0
  40. data/lib/rom/session/state/created.rb +22 -0
  41. data/lib/rom/session/state/deleted.rb +25 -0
  42. data/lib/rom/session/state/persisted.rb +34 -0
  43. data/lib/rom/session/state/transient.rb +20 -0
  44. data/lib/rom/session/state/updated.rb +29 -0
  45. data/lib/rom/session/tracker.rb +62 -0
  46. data/lib/rom/support/axiom/adapter.rb +111 -0
  47. data/lib/rom/support/axiom/adapter/data_objects.rb +38 -0
  48. data/lib/rom/support/axiom/adapter/memory.rb +25 -0
  49. data/lib/rom/support/axiom/adapter/postgres.rb +19 -0
  50. data/lib/rom/support/axiom/adapter/sqlite3.rb +20 -0
  51. data/lib/version.rb +1 -1
  52. data/rom.gemspec +7 -3
  53. data/spec/integration/environment_setup_spec.rb +24 -0
  54. data/spec/integration/grouped_mappers_spec.rb +87 -0
  55. data/spec/integration/join_and_group_spec.rb +76 -0
  56. data/spec/integration/join_and_wrap_spec.rb +68 -0
  57. data/spec/integration/mapping_embedded_relations_spec.rb +73 -0
  58. data/spec/integration/mapping_relations_spec.rb +120 -0
  59. data/spec/integration/schema_definition_spec.rb +152 -0
  60. data/spec/integration/session_spec.rb +87 -0
  61. data/spec/integration/wrapped_mappers_spec.rb +73 -0
  62. data/spec/shared/unit/environment_context.rb +6 -0
  63. data/spec/shared/unit/loader.rb +11 -0
  64. data/spec/shared/unit/loader_identity.rb +13 -0
  65. data/spec/shared/unit/mapper_context.rb +11 -0
  66. data/spec/shared/unit/relation_context.rb +82 -0
  67. data/spec/shared/unit/session_environment_context.rb +11 -0
  68. data/spec/shared/unit/session_relation_context.rb +18 -0
  69. data/spec/spec_helper.rb +49 -0
  70. data/spec/support/helper.rb +34 -0
  71. data/spec/support/ice_nine_config.rb +10 -0
  72. data/spec/support/test_mapper.rb +110 -0
  73. data/spec/unit/rom/environment/builder/mapping_spec.rb +24 -0
  74. data/spec/unit/rom/environment/builder/schema_spec.rb +33 -0
  75. data/spec/unit/rom/environment/class_methods/setup_spec.rb +18 -0
  76. data/spec/unit/rom/environment/repository_spec.rb +21 -0
  77. data/spec/unit/rom/mapper/attribute/embedded_collection/to_ast_spec.rb +18 -0
  78. data/spec/unit/rom/mapper/attribute/embedded_value/to_ast_spec.rb +16 -0
  79. data/spec/unit/rom/mapper/attribute/rename_spec.rb +9 -0
  80. data/spec/unit/rom/mapper/attribute/to_ast_spec.rb +9 -0
  81. data/spec/unit/rom/mapper/builder/class_methods/call_spec.rb +61 -0
  82. data/spec/unit/rom/mapper/class_methods/build_spec.rb +55 -0
  83. data/spec/unit/rom/mapper/dump_spec.rb +11 -0
  84. data/spec/unit/rom/mapper/group_spec.rb +35 -0
  85. data/spec/unit/rom/mapper/header/each_spec.rb +26 -0
  86. data/spec/unit/rom/mapper/header/element_reader_spec.rb +21 -0
  87. data/spec/unit/rom/mapper/header/group_spec.rb +18 -0
  88. data/spec/unit/rom/mapper/header/join_spec.rb +14 -0
  89. data/spec/unit/rom/mapper/header/keys_spec.rb +29 -0
  90. data/spec/unit/rom/mapper/header/project_spec.rb +13 -0
  91. data/spec/unit/rom/mapper/header/rename_spec.rb +11 -0
  92. data/spec/unit/rom/mapper/header/to_ast_spec.rb +11 -0
  93. data/spec/unit/rom/mapper/header/wrap_spec.rb +18 -0
  94. data/spec/unit/rom/mapper/identity_from_tuple_spec.rb +11 -0
  95. data/spec/unit/rom/mapper/identity_spec.rb +11 -0
  96. data/spec/unit/rom/mapper/join_spec.rb +15 -0
  97. data/spec/unit/rom/mapper/load_spec.rb +11 -0
  98. data/spec/unit/rom/mapper/new_object_spec.rb +14 -0
  99. data/spec/unit/rom/mapper/project_spec.rb +11 -0
  100. data/spec/unit/rom/mapper/rename_spec.rb +16 -0
  101. data/spec/unit/rom/mapper/wrap_spec.rb +35 -0
  102. data/spec/unit/rom/relation/delete_spec.rb +15 -0
  103. data/spec/unit/rom/relation/drop_spec.rb +11 -0
  104. data/spec/unit/rom/relation/each_spec.rb +23 -0
  105. data/spec/unit/rom/relation/first_spec.rb +19 -0
  106. data/spec/unit/rom/relation/group_spec.rb +29 -0
  107. data/spec/unit/rom/relation/inject_mapper_spec.rb +17 -0
  108. data/spec/unit/rom/relation/insert_spec.rb +13 -0
  109. data/spec/unit/rom/relation/last_spec.rb +19 -0
  110. data/spec/unit/rom/relation/one_spec.rb +49 -0
  111. data/spec/unit/rom/relation/rename_spec.rb +21 -0
  112. data/spec/unit/rom/relation/replace_spec.rb +13 -0
  113. data/spec/unit/rom/relation/restrict_spec.rb +25 -0
  114. data/spec/unit/rom/relation/sort_by_spec.rb +25 -0
  115. data/spec/unit/rom/relation/take_spec.rb +11 -0
  116. data/spec/unit/rom/relation/to_a_spec.rb +20 -0
  117. data/spec/unit/rom/relation/update_spec.rb +25 -0
  118. data/spec/unit/rom/relation/wrap_spec.rb +29 -0
  119. data/spec/unit/rom/repository/class_methods/build_spec.rb +27 -0
  120. data/spec/unit/rom/repository/element_reader_spec.rb +21 -0
  121. data/spec/unit/rom/repository/element_writer_spec.rb +18 -0
  122. data/spec/unit/rom/schema/builder/class_methods/build_spec.rb +103 -0
  123. data/spec/unit/rom/schema/element_reader_spec.rb +15 -0
  124. data/spec/unit/rom/session/class_methods/start_spec.rb +23 -0
  125. data/spec/unit/rom/session/clean_predicate_spec.rb +21 -0
  126. data/spec/unit/rom/session/environment/element_reader_spec.rb +13 -0
  127. data/spec/unit/rom/session/flush_spec.rb +58 -0
  128. data/spec/unit/rom/session/mapper/load_spec.rb +47 -0
  129. data/spec/unit/rom/session/relation/delete_spec.rb +28 -0
  130. data/spec/unit/rom/session/relation/dirty_predicate_spec.rb +35 -0
  131. data/spec/unit/rom/session/relation/identity_spec.rb +11 -0
  132. data/spec/unit/rom/session/relation/new_spec.rb +50 -0
  133. data/spec/unit/rom/session/relation/save_spec.rb +50 -0
  134. data/spec/unit/rom/session/relation/state_spec.rb +23 -0
  135. data/spec/unit/rom/session/relation/track_spec.rb +23 -0
  136. data/spec/unit/rom/session/relation/tracking_predicate_spec.rb +23 -0
  137. data/spec/unit/rom/session/relation/update_attributes_spec.rb +45 -0
  138. data/spec/unit/rom/session/state_spec.rb +79 -0
  139. metadata +212 -11
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --order random
@@ -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
@@ -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
- gem 'rom', :path => '.'
3
+ gemspec
4
4
 
5
- gem 'rom-relation', :git => 'https://github.com/rom-rb/rom-relation.git'
6
- gem 'rom-mapper', :git => 'https://github.com/rom-rb/rom-mapper.git'
7
- gem 'rom-session', :git => 'https://github.com/rom-rb/rom-session.git'
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 'faker'
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'
@@ -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
@@ -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
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Ruby Object Mapper Team
1
+ Copyright (c) 2013-2014 Ruby Object Mapper Team
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -1,35 +1,38 @@
1
1
  # Ruby Object Mapper
2
2
 
3
- This is a meta-project grouping pieces of ROM's default stack:
4
-
5
- * [rom-relation](https://github.com/rom-rb/rom-relation)
6
- * [rom-mapper](https://github.com/rom-rb/rom-mapper)
7
- * [rom-session](https://github.com/rom-rb/rom-session)
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
- ### 1. Set up environment and define schema
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
- env.schema do
19
- base_relation :users do
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
- ### 2. Set up mapping
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.mapping do
42
- users do
43
- map :id, :name
44
- model User
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
- ### 3. Work with Plain Old Ruby Objects
65
+ ### 2. Work with Plain Old Ruby Objects
50
66
 
51
67
  ```ruby
52
68
  env.session do |session|
53
- session[:users].save(User.new(id: 1, name: 'Jane'))
54
- session.commit
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
- ## Licence
89
+ ## License
68
90
 
69
91
  See `LICENSE` file.
@@ -0,0 +1,3 @@
1
+ # Added by devtools
2
+ require 'devtools'
3
+ Devtools.init_rake_tasks
@@ -0,0 +1,4 @@
1
+ ---
2
+ unit_test_timeout: 0.1
3
+ fail_on_branch:
4
+ - "master"
@@ -0,0 +1,3 @@
1
+ ---
2
+ threshold: 18
3
+ total_score: 310
@@ -0,0 +1,2 @@
1
+ ---
2
+ threshold: 0
@@ -0,0 +1,5 @@
1
+ ---
2
+ name: rom
3
+ namespace:
4
+ - ROM::Relation
5
+ - ROM::Mapper
@@ -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
@@ -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