rom-rails 1.0.1 → 1.1.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 +4 -4
- data/CHANGELOG.md +22 -0
- data/lib/generators/rom/install/templates/application_model.rb +20 -0
- data/lib/generators/rom/install/templates/initializer.rb.erb +3 -0
- data/lib/generators/rom/install/templates/types.rb +10 -0
- data/lib/generators/rom/install_generator.rb +42 -0
- data/lib/generators/rom/repository/templates/repository.rb.erb +3 -1
- data/lib/generators/rom/repository_generator.rb +11 -1
- data/lib/rom/rails/railtie.rb +5 -4
- data/lib/rom/rails/version.rb +1 -1
- data/rom-rails.gemspec +1 -1
- data/spec/lib/generators/install_generator_spec.rb +95 -0
- data/spec/lib/generators/repository_generator_spec.rb +6 -2
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4eaf43b4a1e3674b9796df9c03afefe43e571d2fa9f27f12474b99e472ff636
|
4
|
+
data.tar.gz: f320d87054de5000318c5f5426778d1cba4057ec8331cf0a6861a2713fe84628
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84e3f5fbf22a37294507e14d8de2bc2673091f4a8fe2e5b1a0b9eeba84ead0f967bbb7e08d9a805cd97d30a2c8ff5caba70a601ca88fcdabdd1614a67c424110
|
7
|
+
data.tar.gz: f77380599becffba851cba0a2c4572a03edc968f21dcc83012df701342d4cd64f7825b275b5768fcbd55094c01e163847b67aafa555562431bcc2b1158378134
|
data/CHANGELOG.md
CHANGED
@@ -1,9 +1,24 @@
|
|
1
|
+
## v1.1.0 2018-03-18
|
2
|
+
|
3
|
+
### Added
|
4
|
+
|
5
|
+
* Add a new `rom:install` generator (cflipse)
|
6
|
+
|
7
|
+
### Changed
|
8
|
+
|
9
|
+
* Stop breaking rails loading when not yet configured. (cflipse)
|
10
|
+
* Repository generator prefers `struct_namespace` over mapper (radar, cflipse)
|
11
|
+
|
12
|
+
[Compare v1.0.1...v1.1.0](https://github.com/rom-rb/rom-rails/compare/v1.0.1...v1.1.0)
|
13
|
+
|
1
14
|
## v1.0.1 2017-12-22
|
2
15
|
|
3
16
|
### Changed
|
4
17
|
|
5
18
|
* Loosen ROM dependency
|
6
19
|
|
20
|
+
[Compare v1.0.0...v1.0.1](https://github.com/rom-rb/rom-rails/compare/v1.0.0...v1.0.1)
|
21
|
+
|
7
22
|
## v1.0.0 2017-10-18
|
8
23
|
|
9
24
|
### Changed
|
@@ -19,6 +34,8 @@
|
|
19
34
|
* No longer depends on `rom-model` gem (cflipse)
|
20
35
|
* No longer depends on `charlatan` gem (artofhuman)
|
21
36
|
|
37
|
+
[Compare v0.9.0...v1.0.0](https://github.com/rom-rb/rom-rails/compare/v0.9.0...v1.0.0)
|
38
|
+
|
22
39
|
## v0.9.0 2017-01-30
|
23
40
|
|
24
41
|
### Added
|
@@ -37,6 +54,9 @@
|
|
37
54
|
|
38
55
|
* [`rom-support`](https://github.com/rom-rb/rom-support) dependency was replaced with [`dry-core`](https://github.com/dry-rb/dry-core) (solnic + flash-gordon)
|
39
56
|
|
57
|
+
|
58
|
+
[Compare v0.8.0...v0.9.0](https://github.com/rom-rb/rom-rails/compare/v0.8.0...v0.9.0)
|
59
|
+
|
40
60
|
## v0.8.0 2016-08-08
|
41
61
|
### Changed
|
42
62
|
|
@@ -47,6 +67,8 @@
|
|
47
67
|
### Deprecated
|
48
68
|
* Dropping support for ruby 2.1 and below
|
49
69
|
|
70
|
+
[Compare v0.7.0...v0.8.0](https://github.com/rom-rb/rom-rails/compare/v0.7.0...v0.8.0)
|
71
|
+
|
50
72
|
## v0.7.0 2016-07-27
|
51
73
|
|
52
74
|
### Changed
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'types'
|
2
|
+
|
3
|
+
class ApplicationModel < ROM::Struct
|
4
|
+
def self.inherited(base)
|
5
|
+
super
|
6
|
+
|
7
|
+
base.constructor_type :schema
|
8
|
+
|
9
|
+
base.extend ActiveModel::Naming
|
10
|
+
base.include ActiveModel::Conversion
|
11
|
+
|
12
|
+
base.include Dry::Equalizer(:id)
|
13
|
+
|
14
|
+
base.attribute :id, Types::ID
|
15
|
+
end
|
16
|
+
|
17
|
+
def persisted?
|
18
|
+
id.present?
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'generators/rom'
|
2
|
+
|
3
|
+
module ROM
|
4
|
+
module Generators
|
5
|
+
class InstallGenerator < ::Rails::Generators::Base
|
6
|
+
def self.namespace
|
7
|
+
"rom:#{generator_name}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.source_root
|
11
|
+
File.expand_path("../install/templates", __FILE__)
|
12
|
+
end
|
13
|
+
|
14
|
+
class_option :adapter,
|
15
|
+
banner: '--adapter=adapter',
|
16
|
+
desc: "specify an adapter to use", required: true,
|
17
|
+
default: "sql"
|
18
|
+
|
19
|
+
def create_initializer
|
20
|
+
template 'initializer.rb.erb',
|
21
|
+
File.join('config', 'initializers', 'rom.rb')
|
22
|
+
end
|
23
|
+
|
24
|
+
def add_types_module
|
25
|
+
copy_file "types.rb", "lib/types.rb"
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_application_model
|
29
|
+
copy_file "application_model.rb", "app/models/application_model.rb"
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def adapter
|
37
|
+
options[:adapter].to_sym
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -4,6 +4,12 @@ if defined? ROM::Repository
|
|
4
4
|
module ROM
|
5
5
|
module Generators
|
6
6
|
class RepositoryGenerator < Base
|
7
|
+
|
8
|
+
class_option :namespace,
|
9
|
+
banner: '--namespace=namespace',
|
10
|
+
desc: "specify a struct namespace for the relation", required: true,
|
11
|
+
default: ::Rails.application.class.name.split("::").first
|
12
|
+
|
7
13
|
def create_repository_file
|
8
14
|
template(
|
9
15
|
'repository.rb.erb',
|
@@ -11,7 +17,11 @@ if defined? ROM::Repository
|
|
11
17
|
)
|
12
18
|
end
|
13
19
|
|
14
|
-
|
20
|
+
private
|
21
|
+
|
22
|
+
def struct_namespace
|
23
|
+
options[:namespace]
|
24
|
+
end
|
15
25
|
|
16
26
|
def relation
|
17
27
|
class_name.pluralize.underscore
|
data/lib/rom/rails/railtie.rb
CHANGED
@@ -83,10 +83,11 @@ module ROM
|
|
83
83
|
def gateways
|
84
84
|
config.rom.gateways[:default] ||= infer_default_gateway if active_record?
|
85
85
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
86
|
+
if config.rom.gateways.empty?
|
87
|
+
Rails.logger.warn "It seems that you have not configured any gateways"
|
88
|
+
|
89
|
+
config.rom.gateways[:default] = [ :memory, "memory://test" ]
|
90
|
+
end
|
90
91
|
|
91
92
|
config.rom.gateways
|
92
93
|
end
|
data/lib/rom/rails/version.rb
CHANGED
data/rom-rails.gemspec
CHANGED
@@ -26,5 +26,5 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_development_dependency "rom-repository"
|
27
27
|
spec.add_development_dependency "bundler"
|
28
28
|
spec.add_development_dependency "rake"
|
29
|
-
spec.add_development_dependency "rubocop", "~> 0.
|
29
|
+
spec.add_development_dependency "rubocop", "~> 0.50"
|
30
30
|
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
require 'generators/rom/install_generator'
|
2
|
+
|
3
|
+
RSpec.describe ROM::Generators::InstallGenerator, type: :generator do
|
4
|
+
destination File.expand_path('../../../../tmp', __FILE__)
|
5
|
+
|
6
|
+
before(:each) do
|
7
|
+
prepare_destination
|
8
|
+
end
|
9
|
+
|
10
|
+
it "installs a setup initializer" do
|
11
|
+
run_generator ['install']
|
12
|
+
|
13
|
+
expect(destination_root).to have_structure {
|
14
|
+
directory 'config' do
|
15
|
+
directory 'initializers' do
|
16
|
+
file 'rom.rb' do
|
17
|
+
contains <<-CONTENT.strip_heredoc
|
18
|
+
ROM::Rails::Railtie.configure do |config|
|
19
|
+
config.gateways[:default] = [:sql, ENV.fetch('DATABASE_URL')]
|
20
|
+
end
|
21
|
+
CONTENT
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
}
|
26
|
+
end
|
27
|
+
|
28
|
+
it "allows overriding the adapter type" do
|
29
|
+
run_generator ["install", "--adapter=yaml"]
|
30
|
+
initializer = File.read(File.join(destination_root, "config", "initializers", "rom.rb"))
|
31
|
+
|
32
|
+
expect(initializer).to include("config.gateways[:default] = [:yaml, ENV.fetch('DATABASE_URL')]")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "sets up lib/types" do
|
36
|
+
run_generator ["install"]
|
37
|
+
|
38
|
+
expect(destination_root).to have_structure {
|
39
|
+
directory "lib" do
|
40
|
+
file "types.rb" do
|
41
|
+
contains <<-CONTENT.strip_heredoc
|
42
|
+
require 'dry/types'
|
43
|
+
|
44
|
+
module Types
|
45
|
+
include Dry::Types.module
|
46
|
+
|
47
|
+
ID = Coercible::Int.optional.meta(primary_key: true)
|
48
|
+
|
49
|
+
# Include your own type definitions and coersions here.
|
50
|
+
# See http://dry-rb.org/gems/dry-types
|
51
|
+
end
|
52
|
+
CONTENT
|
53
|
+
end
|
54
|
+
end
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
it "sets up ApplicationModel" do
|
59
|
+
run_generator ["install"]
|
60
|
+
|
61
|
+
expect(destination_root).to have_structure {
|
62
|
+
directory "app" do
|
63
|
+
directory "models" do
|
64
|
+
file "application_model.rb" do
|
65
|
+
contains <<-CONTENT.strip_heredoc
|
66
|
+
require 'types'
|
67
|
+
|
68
|
+
class ApplicationModel < ROM::Struct
|
69
|
+
def self.inherited(base)
|
70
|
+
super
|
71
|
+
|
72
|
+
base.constructor_type :schema
|
73
|
+
|
74
|
+
base.extend ActiveModel::Naming
|
75
|
+
base.include ActiveModel::Conversion
|
76
|
+
|
77
|
+
base.include Dry::Equalizer(:id)
|
78
|
+
|
79
|
+
base.attribute :id, Types::ID
|
80
|
+
end
|
81
|
+
|
82
|
+
def persisted?
|
83
|
+
id.present?
|
84
|
+
end
|
85
|
+
end
|
86
|
+
CONTENT
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
end
|
91
|
+
}
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
end
|
@@ -19,7 +19,9 @@ RSpec.describe ROM::Generators::RepositoryGenerator, type: :generator do
|
|
19
19
|
class UserRepository < ROM::Repository::Root
|
20
20
|
root :users
|
21
21
|
|
22
|
-
commands :create, update: :by_pk, delete: :by_pk
|
22
|
+
commands :create, update: :by_pk, delete: :by_pk
|
23
|
+
|
24
|
+
struct_namespace Dummy
|
23
25
|
end
|
24
26
|
CONTENT
|
25
27
|
end
|
@@ -39,7 +41,9 @@ RSpec.describe ROM::Generators::RepositoryGenerator, type: :generator do
|
|
39
41
|
class UserProfileRepository < ROM::Repository::Root
|
40
42
|
root :user_profiles
|
41
43
|
|
42
|
-
commands :create, update: :by_pk, delete: :by_pk
|
44
|
+
commands :create, update: :by_pk, delete: :by_pk
|
45
|
+
|
46
|
+
struct_namespace Dummy
|
43
47
|
end
|
44
48
|
CONTENT
|
45
49
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rom-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piotr Solnica
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rom
|
@@ -134,14 +134,14 @@ dependencies:
|
|
134
134
|
requirements:
|
135
135
|
- - "~>"
|
136
136
|
- !ruby/object:Gem::Version
|
137
|
-
version: '0.
|
137
|
+
version: '0.50'
|
138
138
|
type: :development
|
139
139
|
prerelease: false
|
140
140
|
version_requirements: !ruby/object:Gem::Requirement
|
141
141
|
requirements:
|
142
142
|
- - "~>"
|
143
143
|
- !ruby/object:Gem::Version
|
144
|
-
version: '0.
|
144
|
+
version: '0.50'
|
145
145
|
description:
|
146
146
|
email:
|
147
147
|
- piotr.solnica@gmail.com
|
@@ -164,6 +164,10 @@ files:
|
|
164
164
|
- lib/generators/rom/commands/templates/delete.rb.erb
|
165
165
|
- lib/generators/rom/commands/templates/update.rb.erb
|
166
166
|
- lib/generators/rom/commands_generator.rb
|
167
|
+
- lib/generators/rom/install/templates/application_model.rb
|
168
|
+
- lib/generators/rom/install/templates/initializer.rb.erb
|
169
|
+
- lib/generators/rom/install/templates/types.rb
|
170
|
+
- lib/generators/rom/install_generator.rb
|
167
171
|
- lib/generators/rom/mapper/templates/mapper.rb.erb
|
168
172
|
- lib/generators/rom/mapper_generator.rb
|
169
173
|
- lib/generators/rom/relation/templates/relation.rb.erb
|
@@ -247,6 +251,7 @@ files:
|
|
247
251
|
- spec/integration/user_model_mapping_spec.rb
|
248
252
|
- spec/lib/active_record/configuration_spec.rb
|
249
253
|
- spec/lib/generators/commands_generator_spec.rb
|
254
|
+
- spec/lib/generators/install_generator_spec.rb
|
250
255
|
- spec/lib/generators/mapper_generator_spec.rb
|
251
256
|
- spec/lib/generators/relation_generator_spec.rb
|
252
257
|
- spec/lib/generators/repository_generator_spec.rb
|
@@ -271,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
271
276
|
version: '0'
|
272
277
|
requirements: []
|
273
278
|
rubyforge_project:
|
274
|
-
rubygems_version: 2.7.
|
279
|
+
rubygems_version: 2.7.6
|
275
280
|
signing_key:
|
276
281
|
specification_version: 4
|
277
282
|
summary: Integrate Ruby Object Mapper with Rails
|
@@ -343,6 +348,7 @@ test_files:
|
|
343
348
|
- spec/integration/user_model_mapping_spec.rb
|
344
349
|
- spec/lib/active_record/configuration_spec.rb
|
345
350
|
- spec/lib/generators/commands_generator_spec.rb
|
351
|
+
- spec/lib/generators/install_generator_spec.rb
|
346
352
|
- spec/lib/generators/mapper_generator_spec.rb
|
347
353
|
- spec/lib/generators/relation_generator_spec.rb
|
348
354
|
- spec/lib/generators/repository_generator_spec.rb
|