rom 0.2.0 → 0.3.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.
- checksums.yaml +7 -0
- data/.gitignore +3 -3
- data/.ruby-version +1 -1
- data/.travis.yml +13 -14
- data/{Changelog.md → CHANGELOG.md} +12 -3
- data/Gemfile +14 -10
- data/Gemfile.devtools +16 -16
- data/Guardfile +2 -5
- data/README.md +68 -56
- data/Rakefile +3 -3
- data/config/flay.yml +2 -2
- data/config/mutant.yml +2 -4
- data/config/rubocop.yml +30 -0
- data/lib/rom.rb +47 -9
- data/lib/rom/adapter.rb +52 -0
- data/lib/rom/adapter/memory.rb +70 -0
- data/lib/rom/boot.rb +158 -0
- data/lib/rom/boot/base_relation_dsl.rb +43 -0
- data/lib/rom/boot/dsl.rb +30 -0
- data/lib/rom/boot/mapper_dsl.rb +23 -0
- data/lib/rom/boot/relation_dsl.rb +23 -0
- data/lib/rom/boot/schema_dsl.rb +27 -0
- data/lib/rom/env.rb +48 -0
- data/lib/rom/header.rb +123 -0
- data/lib/rom/mapper.rb +38 -153
- data/lib/rom/mapper_builder.rb +85 -0
- data/lib/rom/model_builder.rb +58 -0
- data/lib/rom/ra.rb +196 -0
- data/lib/rom/ra/operation/group.rb +49 -0
- data/lib/rom/ra/operation/join.rb +41 -0
- data/lib/rom/ra/operation/wrap.rb +45 -0
- data/lib/rom/reader.rb +62 -0
- data/lib/rom/reader_builder.rb +28 -0
- data/lib/rom/relation.rb +41 -350
- data/lib/rom/relation_builder.rb +48 -0
- data/lib/rom/repository.rb +28 -53
- data/lib/rom/support/registry.rb +34 -0
- data/lib/rom/version.rb +3 -0
- data/rom.gemspec +12 -10
- data/spec/integration/adapters/extending_relations_spec.rb +43 -0
- data/spec/integration/mappers/definition_dsl_spec.rb +82 -0
- data/spec/integration/mappers/prefixing_attributes_spec.rb +42 -0
- data/spec/integration/mappers/renaming_attributes_spec.rb +138 -0
- data/spec/integration/ra/group_spec.rb +47 -0
- data/spec/integration/ra/join_spec.rb +24 -0
- data/spec/integration/ra/wrap_spec.rb +37 -0
- data/spec/integration/relations/reading_spec.rb +116 -0
- data/spec/integration/relations/registry_dsl_spec.rb +44 -0
- data/spec/integration/schema_spec.rb +29 -0
- data/spec/integration/setup_spec.rb +18 -0
- data/spec/shared/users_and_tasks.rb +34 -0
- data/spec/spec_helper.rb +14 -36
- data/spec/unit/rom/adapter_spec.rb +59 -0
- data/spec/unit/rom/header_spec.rb +58 -0
- data/spec/unit/rom/mapper_spec.rb +27 -0
- data/spec/unit/rom/ra/operation/group_spec.rb +55 -0
- data/spec/unit/rom/ra/operation/wrap_spec.rb +29 -0
- data/spec/unit/rom/relation_spec.rb +34 -0
- metadata +122 -190
- data/lib/rom/constants.rb +0 -16
- data/lib/rom/environment.rb +0 -105
- data/lib/rom/environment/builder.rb +0 -71
- data/lib/rom/mapper/attribute.rb +0 -108
- data/lib/rom/mapper/builder.rb +0 -58
- data/lib/rom/mapper/builder/definition.rb +0 -162
- data/lib/rom/mapper/header.rb +0 -103
- data/lib/rom/mapper/loader_builder.rb +0 -26
- data/lib/rom/schema.rb +0 -21
- data/lib/rom/schema/builder.rb +0 -59
- data/lib/rom/schema/definition.rb +0 -84
- data/lib/rom/schema/definition/relation.rb +0 -80
- data/lib/rom/schema/definition/relation/base.rb +0 -27
- data/lib/rom/session.rb +0 -111
- data/lib/rom/session/environment.rb +0 -67
- data/lib/rom/session/identity_map.rb +0 -43
- data/lib/rom/session/mapper.rb +0 -62
- data/lib/rom/session/relation.rb +0 -140
- data/lib/rom/session/state.rb +0 -59
- data/lib/rom/session/state/created.rb +0 -22
- data/lib/rom/session/state/deleted.rb +0 -25
- data/lib/rom/session/state/persisted.rb +0 -34
- data/lib/rom/session/state/transient.rb +0 -20
- data/lib/rom/session/state/updated.rb +0 -29
- data/lib/rom/session/tracker.rb +0 -62
- data/lib/rom/support/axiom/adapter.rb +0 -111
- data/lib/rom/support/axiom/adapter/data_objects.rb +0 -38
- data/lib/rom/support/axiom/adapter/memory.rb +0 -25
- data/lib/rom/support/axiom/adapter/postgres.rb +0 -19
- data/lib/rom/support/axiom/adapter/sqlite3.rb +0 -20
- data/lib/version.rb +0 -3
- data/spec/integration/environment_setup_spec.rb +0 -24
- data/spec/integration/grouped_mappers_spec.rb +0 -87
- data/spec/integration/join_and_group_spec.rb +0 -76
- data/spec/integration/join_and_wrap_spec.rb +0 -68
- data/spec/integration/mapping_embedded_relations_spec.rb +0 -73
- data/spec/integration/mapping_relations_spec.rb +0 -120
- data/spec/integration/schema_definition_spec.rb +0 -152
- data/spec/integration/session_spec.rb +0 -87
- data/spec/integration/wrapped_mappers_spec.rb +0 -73
- data/spec/shared/unit/environment_context.rb +0 -6
- data/spec/shared/unit/loader.rb +0 -11
- data/spec/shared/unit/loader_identity.rb +0 -13
- data/spec/shared/unit/mapper_context.rb +0 -11
- data/spec/shared/unit/relation_context.rb +0 -82
- data/spec/shared/unit/session_environment_context.rb +0 -11
- data/spec/shared/unit/session_relation_context.rb +0 -18
- data/spec/support/helper.rb +0 -34
- data/spec/support/ice_nine_config.rb +0 -10
- data/spec/support/test_mapper.rb +0 -110
- data/spec/unit/rom/environment/builder/mapping_spec.rb +0 -24
- data/spec/unit/rom/environment/builder/schema_spec.rb +0 -33
- data/spec/unit/rom/environment/class_methods/setup_spec.rb +0 -18
- data/spec/unit/rom/environment/repository_spec.rb +0 -21
- data/spec/unit/rom/mapper/attribute/embedded_collection/to_ast_spec.rb +0 -18
- data/spec/unit/rom/mapper/attribute/embedded_value/to_ast_spec.rb +0 -16
- data/spec/unit/rom/mapper/attribute/rename_spec.rb +0 -9
- data/spec/unit/rom/mapper/attribute/to_ast_spec.rb +0 -9
- data/spec/unit/rom/mapper/builder/class_methods/call_spec.rb +0 -61
- data/spec/unit/rom/mapper/class_methods/build_spec.rb +0 -55
- data/spec/unit/rom/mapper/dump_spec.rb +0 -11
- data/spec/unit/rom/mapper/group_spec.rb +0 -35
- data/spec/unit/rom/mapper/header/each_spec.rb +0 -26
- data/spec/unit/rom/mapper/header/element_reader_spec.rb +0 -21
- data/spec/unit/rom/mapper/header/group_spec.rb +0 -18
- data/spec/unit/rom/mapper/header/join_spec.rb +0 -14
- data/spec/unit/rom/mapper/header/keys_spec.rb +0 -29
- data/spec/unit/rom/mapper/header/project_spec.rb +0 -13
- data/spec/unit/rom/mapper/header/rename_spec.rb +0 -11
- data/spec/unit/rom/mapper/header/to_ast_spec.rb +0 -11
- data/spec/unit/rom/mapper/header/wrap_spec.rb +0 -18
- data/spec/unit/rom/mapper/identity_from_tuple_spec.rb +0 -11
- data/spec/unit/rom/mapper/identity_spec.rb +0 -11
- data/spec/unit/rom/mapper/join_spec.rb +0 -15
- data/spec/unit/rom/mapper/load_spec.rb +0 -11
- data/spec/unit/rom/mapper/new_object_spec.rb +0 -14
- data/spec/unit/rom/mapper/project_spec.rb +0 -11
- data/spec/unit/rom/mapper/rename_spec.rb +0 -16
- data/spec/unit/rom/mapper/wrap_spec.rb +0 -35
- data/spec/unit/rom/relation/delete_spec.rb +0 -15
- data/spec/unit/rom/relation/drop_spec.rb +0 -11
- data/spec/unit/rom/relation/each_spec.rb +0 -23
- data/spec/unit/rom/relation/first_spec.rb +0 -19
- data/spec/unit/rom/relation/group_spec.rb +0 -29
- data/spec/unit/rom/relation/inject_mapper_spec.rb +0 -17
- data/spec/unit/rom/relation/insert_spec.rb +0 -13
- data/spec/unit/rom/relation/last_spec.rb +0 -19
- data/spec/unit/rom/relation/one_spec.rb +0 -49
- data/spec/unit/rom/relation/rename_spec.rb +0 -21
- data/spec/unit/rom/relation/replace_spec.rb +0 -13
- data/spec/unit/rom/relation/restrict_spec.rb +0 -25
- data/spec/unit/rom/relation/sort_by_spec.rb +0 -25
- data/spec/unit/rom/relation/take_spec.rb +0 -11
- data/spec/unit/rom/relation/to_a_spec.rb +0 -20
- data/spec/unit/rom/relation/update_spec.rb +0 -25
- data/spec/unit/rom/relation/wrap_spec.rb +0 -29
- data/spec/unit/rom/repository/class_methods/build_spec.rb +0 -27
- data/spec/unit/rom/repository/element_reader_spec.rb +0 -21
- data/spec/unit/rom/repository/element_writer_spec.rb +0 -18
- data/spec/unit/rom/schema/builder/class_methods/build_spec.rb +0 -103
- data/spec/unit/rom/schema/element_reader_spec.rb +0 -15
- data/spec/unit/rom/session/class_methods/start_spec.rb +0 -23
- data/spec/unit/rom/session/clean_predicate_spec.rb +0 -21
- data/spec/unit/rom/session/environment/element_reader_spec.rb +0 -13
- data/spec/unit/rom/session/flush_spec.rb +0 -58
- data/spec/unit/rom/session/mapper/load_spec.rb +0 -47
- data/spec/unit/rom/session/relation/delete_spec.rb +0 -28
- data/spec/unit/rom/session/relation/dirty_predicate_spec.rb +0 -35
- data/spec/unit/rom/session/relation/identity_spec.rb +0 -11
- data/spec/unit/rom/session/relation/new_spec.rb +0 -50
- data/spec/unit/rom/session/relation/save_spec.rb +0 -50
- data/spec/unit/rom/session/relation/state_spec.rb +0 -23
- data/spec/unit/rom/session/relation/track_spec.rb +0 -23
- data/spec/unit/rom/session/relation/tracking_predicate_spec.rb +0 -23
- data/spec/unit/rom/session/relation/update_attributes_spec.rb +0 -45
- data/spec/unit/rom/session/state_spec.rb +0 -79
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 721bf4200ba43797d78160490085ab5f545c4845
|
4
|
+
data.tar.gz: b0931e08715301413a9f21ab95694dee5a1d1074
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 829fd23000ae2dc4f88a05462285f34e47ce2aa288c14d93bd86385bc5ea8d4c281cfd579690f802911b644c49fc756a0fa37428a5429c8ce1427733c7dbbe51
|
7
|
+
data.tar.gz: 6a4513c5fe5f436ada0045ce4a9b7933d5c2a6f6f58a546d013ec8f7e5dc9719dace3cfdb89b75fbc8769f22cb9fd988225eaae1f080d6e2c6cd94718dcc4782
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
2.1.5
|
data/.travis.yml
CHANGED
@@ -1,22 +1,21 @@
|
|
1
1
|
language: ruby
|
2
|
-
|
3
|
-
|
2
|
+
env:
|
3
|
+
- CODECLIMATE_REPO_TOKEN=f7c652b65a700fcf1032174afc5ea243b991e48bf73077cc34c148e1c800a2f7
|
4
|
+
bundler_args: --without sql benchmarks
|
5
|
+
script: "bundle exec rake spec"
|
4
6
|
rvm:
|
5
|
-
-
|
6
|
-
- 2.
|
7
|
-
- 2
|
8
|
-
- rbx
|
7
|
+
- 2.0
|
8
|
+
- 2.1
|
9
|
+
- rbx-2
|
9
10
|
- jruby
|
10
11
|
- ruby-head
|
11
12
|
matrix:
|
12
13
|
allow_failures:
|
13
14
|
- rvm: ruby-head
|
14
15
|
notifications:
|
15
|
-
|
16
|
-
|
17
|
-
-
|
18
|
-
on_success:
|
19
|
-
on_failure:
|
20
|
-
|
21
|
-
on_success: never
|
22
|
-
on_failure: change
|
16
|
+
webhooks:
|
17
|
+
urls:
|
18
|
+
- https://webhooks.gitter.im/e/39e1225f489f38b0bd09
|
19
|
+
on_success: change
|
20
|
+
on_failure: always
|
21
|
+
on_start: false
|
@@ -1,3 +1,10 @@
|
|
1
|
+
# v0.3.0 2014-11-24
|
2
|
+
|
3
|
+
This version is a rewrite that introduces a new, simplified architecture based
|
4
|
+
on a new adapter interface.
|
5
|
+
|
6
|
+
[Compare v0.2.0...v0.3.0](https://github.com/rom-rb/rom/compare/v0.2.0...v0.3.0)
|
7
|
+
|
1
8
|
# v0.2.0 2014-04-06
|
2
9
|
|
3
10
|
* [BREAKING] rom-relation, rom-mapper and rom-session were merged into rom project (solnic)
|
@@ -12,20 +19,22 @@
|
|
12
19
|
* [feature] environment exposes mapper registry via Environment#mappers (solnic)
|
13
20
|
* [internal] mappers are now backed by [morpher](https://github.com/mbj/morpher) (solnic)
|
14
21
|
* [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)
|
22
|
+
* [internal] environment will raise if unknown relation is referenced via `Environment#[]` (solnic)
|
23
|
+
|
24
|
+
[Compare v0.1.2...v0.2.0](https://github.com/rom-rb/rom/compare/v0.1.2...v0.2.0)
|
16
25
|
|
17
26
|
# v0.1.2 2013-09-02
|
18
27
|
|
19
28
|
* [updated] [rom-relation](https://github.com/rom-rb/rom-relation/blob/v0.1.2/Changelog.md#v012-2013-09-02)
|
20
29
|
|
21
|
-
[Compare v0.1.1
|
30
|
+
[Compare v0.1.1...v0.1.2](https://github.com/rom-rb/rom/compare/v0.1.1...v0.1.2)
|
22
31
|
|
23
32
|
# v0.1.1 2013-08-30
|
24
33
|
|
25
34
|
* [updated] [rom-relation](https://github.com/rom-rb/rom-relation/blob/v0.1.1/Changelog.md#v011-2013-08-30)
|
26
35
|
* [updated] [rom-session](https://github.com/rom-rb/rom-session/blob/v0.1.1/Changelog.md#v011-2013-08-30)
|
27
36
|
|
28
|
-
[Compare v0.1.0
|
37
|
+
[Compare v0.1.0...v0.1.1](https://github.com/rom-rb/rom/compare/v0.1.0...v0.1.1)
|
29
38
|
|
30
39
|
# v0.1.0 2013-08-23
|
31
40
|
|
data/Gemfile
CHANGED
@@ -3,17 +3,21 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :test do
|
6
|
-
gem '
|
7
|
-
gem '
|
8
|
-
gem 'rubysl-bigdecimal', :
|
6
|
+
gem 'mutant'
|
7
|
+
gem 'mutant-rspec'
|
8
|
+
gem 'rubysl-bigdecimal', platforms: :rbx
|
9
|
+
gem 'guard'
|
10
|
+
gem 'guard-rspec'
|
11
|
+
gem 'codeclimate-test-reporter', require: false
|
9
12
|
end
|
10
13
|
|
11
|
-
group :
|
12
|
-
gem '
|
14
|
+
group :sql do
|
15
|
+
gem 'rom-sql', git: 'https://github.com/rom-rb/rom-sql.git', branch: 'master'
|
16
|
+
gem 'jdbc-sqlite3', platforms: :jruby
|
17
|
+
gem 'sqlite3', platforms: [:mri, :rbx]
|
13
18
|
end
|
14
19
|
|
15
|
-
|
16
|
-
gem '
|
17
|
-
|
18
|
-
|
19
|
-
eval_gemfile 'Gemfile.devtools'
|
20
|
+
group :benchmarks do
|
21
|
+
gem 'activerecord'
|
22
|
+
gem 'benchmark-ips'
|
23
|
+
end
|
data/Gemfile.devtools
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
|
3
3
|
group :development do
|
4
|
-
gem 'rake', '~> 10.2
|
5
|
-
gem 'rspec', '~>
|
6
|
-
gem 'rspec-
|
4
|
+
gem 'rake', '~> 10.3.2'
|
5
|
+
gem 'rspec', '~> 3.1.0'
|
6
|
+
gem 'rspec-its', '~> 1.0.1'
|
7
7
|
gem 'yard', '~> 0.8.7.4'
|
8
8
|
|
9
9
|
platform :rbx do
|
@@ -16,35 +16,35 @@ group :yard do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
group :guard do
|
19
|
-
gem 'guard', '~> 2.6.
|
19
|
+
gem 'guard', '~> 2.6.1'
|
20
20
|
gem 'guard-bundler', '~> 2.0.0'
|
21
|
-
gem 'guard-rspec', '~> 4.2.
|
22
|
-
gem 'guard-rubocop', '~> 1.0
|
21
|
+
gem 'guard-rspec', '~> 4.2.9'
|
22
|
+
gem 'guard-rubocop', '~> 1.1.0'
|
23
23
|
|
24
24
|
# file system change event handling
|
25
|
-
gem 'listen', '~> 2.7.
|
25
|
+
gem 'listen', '~> 2.7.7'
|
26
26
|
gem 'rb-fchange', '~> 0.0.6', require: false
|
27
27
|
gem 'rb-fsevent', '~> 0.9.4', require: false
|
28
|
-
gem 'rb-inotify', '~> 0.9.
|
28
|
+
gem 'rb-inotify', '~> 0.9.5', require: false
|
29
29
|
|
30
30
|
# notification handling
|
31
|
-
gem 'libnotify', '~> 0.8.
|
31
|
+
gem 'libnotify', '~> 0.8.3', require: false
|
32
32
|
gem 'rb-notifu', '~> 0.0.4', require: false
|
33
33
|
gem 'terminal-notifier-guard', '~> 1.5.3', require: false
|
34
34
|
end
|
35
35
|
|
36
36
|
group :metrics do
|
37
37
|
gem 'coveralls', '~> 0.7.0'
|
38
|
-
gem 'flay', '~> 2.
|
39
|
-
gem 'flog', '~> 4.2.
|
38
|
+
gem 'flay', '~> 2.5.0'
|
39
|
+
gem 'flog', '~> 4.2.1'
|
40
40
|
gem 'reek', '~> 1.3.7'
|
41
|
-
gem 'rubocop', '~> 0.
|
42
|
-
gem 'simplecov', '~> 0.
|
41
|
+
gem 'rubocop', '~> 0.23.0'
|
42
|
+
gem 'simplecov', '~> 0.7.1'
|
43
43
|
gem 'yardstick', '~> 0.9.9'
|
44
44
|
|
45
45
|
platforms :mri do
|
46
|
-
gem 'mutant', '~> 0.
|
47
|
-
gem 'mutant-rspec', '~> 0.
|
46
|
+
gem 'mutant', '~> 0.6.3'
|
47
|
+
gem 'mutant-rspec', '~> 0.6.3'
|
48
48
|
end
|
49
49
|
|
50
50
|
platforms :ruby_19, :ruby_20 do
|
@@ -66,6 +66,6 @@ end
|
|
66
66
|
|
67
67
|
platform :jruby do
|
68
68
|
group :jruby do
|
69
|
-
gem 'jruby-openssl', '~> 0.
|
69
|
+
gem 'jruby-openssl', '~> 0.9.4'
|
70
70
|
end
|
71
71
|
end
|
data/Guardfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
guard :rspec do
|
1
|
+
guard :rspec, cmd: "rspec" do
|
2
2
|
#run all specs if configuration is modified
|
3
3
|
watch('Guardfile') { 'spec' }
|
4
4
|
watch('Gemfile.lock') { 'spec' }
|
@@ -7,10 +7,7 @@ guard :rspec do
|
|
7
7
|
# run all specs if supporting files files are modified
|
8
8
|
watch(%r{\Aspec/(?:lib|support|shared)/.+\.rb\z}) { 'spec' }
|
9
9
|
|
10
|
-
|
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' }
|
10
|
+
watch(%r{\Alib/(.+)\.rb\z}) { |m| 'spec' }
|
14
11
|
|
15
12
|
# run a spec if it is modified
|
16
13
|
watch(%r{\Aspec/(?:unit|integration)/.+_spec\.rb\z})
|
data/README.md
CHANGED
@@ -1,90 +1,102 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
[][gem]
|
4
|
-
[][travis]
|
1
|
+
[][gem]
|
2
|
+
[][travis]
|
5
3
|
[][gemnasium]
|
6
|
-
[][codeclimate]
|
5
|
+
[][codeclimate]
|
6
|
+
[][inchpages]
|
9
7
|
|
10
8
|
[gem]: https://rubygems.org/gems/rom
|
11
9
|
[travis]: https://travis-ci.org/rom-rb/rom
|
12
10
|
[gemnasium]: https://gemnasium.com/rom-rb/rom
|
13
11
|
[codeclimate]: https://codeclimate.com/github/rom-rb/rom
|
14
12
|
[coveralls]: https://coveralls.io/r/rom-rb/rom
|
15
|
-
[inchpages]: http://inch-
|
13
|
+
[inchpages]: http://inch-ci.org/github/rom-rb/rom/
|
16
14
|
|
17
|
-
Ruby Object Mapper
|
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).
|
15
|
+
# Ruby Object Mapper
|
20
16
|
|
21
|
-
|
17
|
+
ROM is an experimental Ruby ORM that aims to bring powerful object mapping
|
18
|
+
capabilities and give you back the full power of your database. It is based on
|
19
|
+
a couple of core concepts which makes it different from a typical ORM:
|
22
20
|
|
23
|
-
|
24
|
-
|
21
|
+
* Quering a database is considered as a private implementation detail
|
22
|
+
* Abstract query interfaces are evil and a source of unnecessary complexity
|
23
|
+
* Reading and mutating data are 2 distinct concerns and should be treated separately
|
24
|
+
* It must be **simple** to use the full power of your database
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
With that in mind ROM ships with adapters that allow you to connect to any
|
27
|
+
database and exposes a DSL to define **relations** and **mappers** to simplify
|
28
|
+
accessing the data.
|
29
29
|
|
30
|
-
|
30
|
+
Database support:
|
31
31
|
|
32
|
-
|
33
|
-
|
34
|
-
require 'axiom-memory-adapter'
|
32
|
+
* [rom-sql](https://github.com/rom-rb/rom-sql)
|
33
|
+
* [rom-mongo](https://github.com/rom-rb/rom-mongo)
|
35
34
|
|
36
|
-
|
37
|
-
|
35
|
+
See [issues](https://github.com/rom-rb/rom/issues?q=is%3Aopen+is%3Aissue+label%3Aadapter+label%3Afeature)
|
36
|
+
for a list of adapters that are planned to be added soon.
|
38
37
|
|
39
|
-
|
40
|
-
@id, @name = attributes.values_at(:id, :name)
|
41
|
-
end
|
42
|
-
end
|
38
|
+
## Synopsis
|
43
39
|
|
44
|
-
|
45
|
-
|
46
|
-
base_relation :users do
|
47
|
-
repository :memory
|
40
|
+
``` ruby
|
41
|
+
require 'rom-sql'
|
48
42
|
|
49
|
-
|
50
|
-
attribute :name, String
|
43
|
+
setup = ROM.setup(sqlite: "sqlite::memory")
|
51
44
|
|
52
|
-
|
53
|
-
|
54
|
-
|
45
|
+
setup.sqlite.connection.create_table :users do
|
46
|
+
primary_key :id
|
47
|
+
String :name
|
48
|
+
Integer :age
|
49
|
+
end
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
model User
|
60
|
-
end
|
61
|
-
end
|
51
|
+
setup.relation(:users) do
|
52
|
+
def by_name(name)
|
53
|
+
where(name: name)
|
62
54
|
end
|
63
|
-
```
|
64
55
|
|
65
|
-
|
56
|
+
def adults
|
57
|
+
where { age >= 18 }
|
58
|
+
end
|
59
|
+
end
|
66
60
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
session[:users].save(user)
|
71
|
-
session.flush
|
61
|
+
setup.mappers do
|
62
|
+
define(:users) do
|
63
|
+
model(name: 'User')
|
72
64
|
end
|
65
|
+
end
|
73
66
|
|
74
|
-
|
67
|
+
rom = setup.finalize
|
68
|
+
|
69
|
+
# accessing registered relations
|
70
|
+
users = rom.relations.users
|
71
|
+
|
72
|
+
users.insert(name: "Joe", age: 17)
|
73
|
+
users.insert(name: "Jane", age: 18)
|
74
|
+
|
75
|
+
puts users.by_name("Jane").adults.to_a.inspect
|
76
|
+
# => [{:id=>2, :name=>"Jane", :age=>18}]
|
77
|
+
|
78
|
+
# reading relations using defined mappers
|
79
|
+
puts rom.read(:users).by_name("Jane").adults.to_a.inspect
|
80
|
+
# => [#<User:0x007fdba161cc48 @id=2, @name="Jane", @age=18>]
|
75
81
|
```
|
76
82
|
|
83
|
+
## ROADMAP
|
84
|
+
|
85
|
+
ROM is on its way towards 1.0.0. Please refer to [issues](https://github.com/rom-rb/rom/issues)
|
86
|
+
for details.
|
87
|
+
|
77
88
|
## Community
|
78
89
|
|
79
|
-
*
|
90
|
+
* [](https://gitter.im/rom-rb/chat)
|
80
91
|
* [Ruby Object Mapper](https://groups.google.com/forum/#!forum/rom-rb) mailing list
|
81
92
|
|
82
|
-
##
|
93
|
+
## Credits
|
94
|
+
|
95
|
+
This project has a long history and wouldn't exist without following people:
|
83
96
|
|
84
|
-
* [Dan Kubb](https://github.com/dkubb)
|
85
|
-
* [Markus Schirp](https://github.com/mbj)
|
86
|
-
* [Martin Gamsjaeger](https://github.com/snusnu)
|
87
|
-
* [Piotr Solnica](https://github.com/solnic)
|
97
|
+
* [Dan Kubb](https://github.com/dkubb)
|
98
|
+
* [Markus Schirp](https://github.com/mbj)
|
99
|
+
* [Martin Gamsjaeger](https://github.com/snusnu)
|
88
100
|
|
89
101
|
## License
|
90
102
|
|
data/Rakefile
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require "rspec/core/rake_task"
|
2
|
+
|
3
|
+
RSpec::Core::RakeTask.new(:spec)
|
data/config/flay.yml
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
---
|
2
|
-
threshold:
|
3
|
-
total_score:
|
2
|
+
threshold: 0
|
3
|
+
total_score: 0
|
data/config/mutant.yml
CHANGED
data/config/rubocop.yml
CHANGED
@@ -12,6 +12,11 @@ ParameterLists:
|
|
12
12
|
Max: 3
|
13
13
|
CountKeywordArgs: true
|
14
14
|
|
15
|
+
# Limit method length
|
16
|
+
MethodLength:
|
17
|
+
CountComments: false
|
18
|
+
Max: 10
|
19
|
+
|
15
20
|
# Avoid more than `Max` levels of nesting.
|
16
21
|
BlockNesting:
|
17
22
|
Max: 3
|
@@ -41,6 +46,10 @@ LineLength:
|
|
41
46
|
Documentation:
|
42
47
|
Enabled: false
|
43
48
|
|
49
|
+
# Do not always use &&/|| instead of and/or.
|
50
|
+
AndOr:
|
51
|
+
Enabled: false
|
52
|
+
|
44
53
|
# Do not favor modifier if/unless usage when you have a single-line body
|
45
54
|
IfUnlessModifier:
|
46
55
|
Enabled: false
|
@@ -57,6 +66,27 @@ ConstantName:
|
|
57
66
|
TrivialAccessors:
|
58
67
|
Enabled: false
|
59
68
|
|
69
|
+
# Do not prefer do/end over {} for multiline blocks
|
70
|
+
Blocks:
|
71
|
+
Enabled: false
|
72
|
+
|
60
73
|
# Allow empty lines around body
|
61
74
|
EmptyLinesAroundBody:
|
62
75
|
Enabled: false
|
76
|
+
|
77
|
+
# Prefer String#% over Kernel#sprintf
|
78
|
+
FormatString:
|
79
|
+
Enabled: false
|
80
|
+
|
81
|
+
# Use square brackets for literal Array objects
|
82
|
+
PercentLiteralDelimiters:
|
83
|
+
PreferredDelimiters:
|
84
|
+
'%': ()
|
85
|
+
'%i': '[]'
|
86
|
+
'%q': ()
|
87
|
+
'%Q': ()
|
88
|
+
'%r': '{}'
|
89
|
+
'%s': ()
|
90
|
+
'%w': '[]'
|
91
|
+
'%W': '[]'
|
92
|
+
'%x': ()
|