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