rom 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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