compony 0.0.9 → 0.1.1
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 +32 -0
- data/Gemfile.lock +1 -1
- data/Rakefile +1 -0
- data/compony.gemspec +15 -14
- data/lib/compony/component.rb +1 -1
- data/lib/compony/components/destroy.rb +3 -5
- data/lib/compony/components/edit.rb +3 -4
- data/lib/compony/engine.rb +8 -6
- data/lib/compony/model_fields/association.rb +6 -16
- data/lib/compony/model_mixin.rb +0 -9
- data/lib/compony/version.rb +2 -2
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecb0c40f2981194e5fa6a297731c5f224f49c8d73594f016149567da28553c93
|
4
|
+
data.tar.gz: 93b518bd1fd54dd04a628df57f18ee120b2be4485241b50b9143fe136eb4bb14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4f6f506c58e51ab3086b8a3870d05bccaefca10529869b90ed11b6ce83f0d76c6c114062c62a99ecdc3fa08dc24b8f55b825a586c640919b176ba2110eb7b7f
|
7
|
+
data.tar.gz: afddee67f4c6659008704e572bee553ec6350f3fb8ad06550089e9b1954a913e5e0faf43b6d83cb35b0ae14f70c4889577cab13fda427f5a9e7d25341a442164
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,33 @@
|
|
1
|
+
# 0.1.1
|
2
|
+
|
3
|
+
- Support and force Rails 7.1.2
|
4
|
+
|
5
|
+
## Steps to perform
|
6
|
+
|
7
|
+
- in `config/application.rb`, replace `config.load_defaults 7.0` by `config.load_defaults 7.1` and add:
|
8
|
+
```ruby
|
9
|
+
# Please, add to the `ignore` list any other `lib` subdirectories that do
|
10
|
+
# not contain `.rb` files, or that should not be reloaded or eager loaded.
|
11
|
+
# Common ones are `templates`, `generators`, or `middleware`, for example.
|
12
|
+
config.autoload_lib(ignore: %w(assets tasks))
|
13
|
+
```
|
14
|
+
|
15
|
+
# 0.1.0
|
16
|
+
|
17
|
+
- Remove (hopefully) obsolete database safeguard in `resolve_association!` as we should no longer be accessing the DB.
|
18
|
+
- BREAKING: Remove `primary_key_type` and tolerate int and str as primary and foreign key in all params.
|
19
|
+
- This fixes a bug introduced in 0.0.10 breaking polymorphic relations.
|
20
|
+
- Support Rails 7.1
|
21
|
+
- No longer rely on `controller.response.body.blank?` but use `controller.response_body.nil?` instead
|
22
|
+
|
23
|
+
## Steps to perform
|
24
|
+
|
25
|
+
- Remove any calls to `primary_key_type`
|
26
|
+
|
1
27
|
# 0.0.9
|
2
28
|
|
29
|
+
Do not use.
|
30
|
+
|
3
31
|
- Support forms with references to tables with uuid type primary key
|
4
32
|
- Support for `owned_by` in model:
|
5
33
|
- Smart redirect
|
@@ -9,6 +37,10 @@
|
|
9
37
|
- Add features `Compony.content_before_root_comp` and `Compony.content_after_root_comp`
|
10
38
|
- Add new field kind percentage
|
11
39
|
|
40
|
+
## KNOWN BUGS
|
41
|
+
|
42
|
+
- This version breaks polymorphic relations.
|
43
|
+
|
12
44
|
# 0.0.8
|
13
45
|
|
14
46
|
- Support selecting anchormodel inputs via radio buttons
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
@@ -17,6 +17,7 @@ task :gemspec do
|
|
17
17
|
s.add_development_dependency 'rubocop', '>= 1.48'
|
18
18
|
s.add_development_dependency 'rubocop-rails', '>= 2.18.0'
|
19
19
|
|
20
|
+
s.add_runtime_dependency 'rails', '>= 7.1.2'
|
20
21
|
s.add_runtime_dependency 'request_store', '>= 1.5'
|
21
22
|
s.add_runtime_dependency 'dyny', '>= 0.0.3'
|
22
23
|
s.add_runtime_dependency 'schemacop', '>= 3.0.17'
|
data/compony.gemspec
CHANGED
@@ -2,31 +2,32 @@
|
|
2
2
|
# This file is auto-generated via: 'rake gemspec'.
|
3
3
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: compony 0.
|
5
|
+
# stub: compony 0.1.1 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "compony".freeze
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.1.1".freeze
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Sandro Kalbermatter".freeze, "contributors".freeze]
|
14
|
-
s.date = "2023-11-
|
14
|
+
s.date = "2023-11-23"
|
15
15
|
s.files = [".gitignore".freeze, ".ruby-version".freeze, ".yardopts".freeze, "CHANGELOG.md".freeze, "Gemfile".freeze, "Gemfile.lock".freeze, "LICENSE".freeze, "README.md".freeze, "Rakefile".freeze, "app/controllers/compony_controller.rb".freeze, "compony.gemspec".freeze, "config/locales/de.yml".freeze, "config/locales/en.yml".freeze, "config/routes.rb".freeze, "doc/resourceful_lifecycle.graphml".freeze, "doc/resourceful_lifecycle.pdf".freeze, "lib/compony.rb".freeze, "lib/compony/component.rb".freeze, "lib/compony/component_mixins/default/labelling.rb".freeze, "lib/compony/component_mixins/default/standalone.rb".freeze, "lib/compony/component_mixins/default/standalone/resourceful_verb_dsl.rb".freeze, "lib/compony/component_mixins/default/standalone/standalone_dsl.rb".freeze, "lib/compony/component_mixins/default/standalone/verb_dsl.rb".freeze, "lib/compony/component_mixins/resourceful.rb".freeze, "lib/compony/components/button.rb".freeze, "lib/compony/components/destroy.rb".freeze, "lib/compony/components/edit.rb".freeze, "lib/compony/components/form.rb".freeze, "lib/compony/components/new.rb".freeze, "lib/compony/components/with_form.rb".freeze, "lib/compony/controller_mixin.rb".freeze, "lib/compony/engine.rb".freeze, "lib/compony/method_accessible_hash.rb".freeze, "lib/compony/model_fields/anchormodel.rb".freeze, "lib/compony/model_fields/association.rb".freeze, "lib/compony/model_fields/attachment.rb".freeze, "lib/compony/model_fields/base.rb".freeze, "lib/compony/model_fields/boolean.rb".freeze, "lib/compony/model_fields/color.rb".freeze, "lib/compony/model_fields/currency.rb".freeze, "lib/compony/model_fields/date.rb".freeze, "lib/compony/model_fields/datetime.rb".freeze, "lib/compony/model_fields/decimal.rb".freeze, "lib/compony/model_fields/email.rb".freeze, "lib/compony/model_fields/float.rb".freeze, "lib/compony/model_fields/integer.rb".freeze, "lib/compony/model_fields/percentage.rb".freeze, "lib/compony/model_fields/phone.rb".freeze, "lib/compony/model_fields/rich_text.rb".freeze, "lib/compony/model_fields/string.rb".freeze, "lib/compony/model_fields/text.rb".freeze, "lib/compony/model_fields/time.rb".freeze, "lib/compony/model_fields/url.rb".freeze, "lib/compony/model_mixin.rb".freeze, "lib/compony/request_context.rb".freeze, "lib/compony/version.rb".freeze, "lib/compony/view_helpers.rb".freeze, "lib/generators/component/USAGE".freeze, "lib/generators/component/component_generator.rb".freeze, "lib/generators/component/templates/component.rb.erb".freeze, "lib/generators/component/templates/destroy.rb.erb".freeze, "lib/generators/component/templates/edit.rb.erb".freeze, "lib/generators/component/templates/form.rb.erb".freeze, "lib/generators/component/templates/new.rb.erb".freeze, "lib/generators/components/USAGE".freeze, "lib/generators/components/components_generator.rb".freeze]
|
16
16
|
s.required_ruby_version = Gem::Requirement.new(">= 3.0.0".freeze)
|
17
|
-
s.rubygems_version = "3.4.
|
17
|
+
s.rubygems_version = "3.4.21".freeze
|
18
18
|
s.summary = "Needs summary".freeze
|
19
19
|
|
20
20
|
s.specification_version = 4
|
21
21
|
|
22
|
-
s.add_development_dependency(%q<yard>.freeze, [">= 0.9.28"])
|
23
|
-
s.add_development_dependency(%q<rubocop>.freeze, [">= 1.48"])
|
24
|
-
s.add_development_dependency(%q<rubocop-rails>.freeze, [">= 2.18.0"])
|
25
|
-
s.add_runtime_dependency(%q<
|
26
|
-
s.add_runtime_dependency(%q<
|
27
|
-
s.add_runtime_dependency(%q<
|
28
|
-
s.add_runtime_dependency(%q<
|
29
|
-
s.add_runtime_dependency(%q<
|
30
|
-
s.add_runtime_dependency(%q<
|
31
|
-
s.add_runtime_dependency(%q<
|
22
|
+
s.add_development_dependency(%q<yard>.freeze, [">= 0.9.28".freeze])
|
23
|
+
s.add_development_dependency(%q<rubocop>.freeze, [">= 1.48".freeze])
|
24
|
+
s.add_development_dependency(%q<rubocop-rails>.freeze, [">= 2.18.0".freeze])
|
25
|
+
s.add_runtime_dependency(%q<rails>.freeze, [">= 7.1.2".freeze])
|
26
|
+
s.add_runtime_dependency(%q<request_store>.freeze, [">= 1.5".freeze])
|
27
|
+
s.add_runtime_dependency(%q<dyny>.freeze, [">= 0.0.3".freeze])
|
28
|
+
s.add_runtime_dependency(%q<schemacop>.freeze, [">= 3.0.17".freeze])
|
29
|
+
s.add_runtime_dependency(%q<simple_form>.freeze, [">= 5.1.0".freeze])
|
30
|
+
s.add_runtime_dependency(%q<dslblend>.freeze, [">= 0.0.3".freeze])
|
31
|
+
s.add_runtime_dependency(%q<anchormodel>.freeze, ["~> 0.1.2".freeze])
|
32
|
+
s.add_runtime_dependency(%q<cancancan>.freeze, ["~> 3.4.0".freeze])
|
32
33
|
end
|
data/lib/compony/component.rb
CHANGED
@@ -152,7 +152,7 @@ module Compony
|
|
152
152
|
# Call before_render hook if any and backfire instance variables back to the component
|
153
153
|
RequestContext.new(self, controller, locals:).request_context.evaluate_with_backfire(&@before_render_block) if @before_render_block
|
154
154
|
# Render, unless before_render has already issued a body (e.g. through redirecting).
|
155
|
-
if controller.
|
155
|
+
if controller.response_body.nil?
|
156
156
|
fail "#{self.class.inspect} must define `content` or set a response body in `before_render`" if @content_blocks.none?
|
157
157
|
return controller.render_to_string(
|
158
158
|
type: :dyny,
|
@@ -43,12 +43,10 @@ module Compony
|
|
43
43
|
|
44
44
|
store_data do
|
45
45
|
# Validate params against the form's schema
|
46
|
-
local_data = @data # Capture data for usage in the Schemacop call
|
47
46
|
schema = Schemacop::Schema3.new :hash, additional_properties: true do
|
48
|
-
|
49
|
-
str
|
50
|
-
|
51
|
-
int! :id, cast_str: true
|
47
|
+
any_of! :id do
|
48
|
+
str
|
49
|
+
int cast_str: true
|
52
50
|
end
|
53
51
|
end
|
54
52
|
schema.validate!(controller.request.params)
|
@@ -44,10 +44,9 @@ module Compony
|
|
44
44
|
local_form_comp = form_comp # Capture form_comp for usage in the Schemacop call
|
45
45
|
local_data = @data # Capture data for usage in the Schemacop call
|
46
46
|
schema = Schemacop::Schema3.new :hash, additional_properties: true do
|
47
|
-
|
48
|
-
str
|
49
|
-
|
50
|
-
int! :id, cast_str: true
|
47
|
+
any_of! :id do
|
48
|
+
str
|
49
|
+
int cast_str: true
|
51
50
|
end
|
52
51
|
hsh? local_form_comp.schema_wrapper_key_for(local_data), &local_form_comp.schema_block_for(local_data)
|
53
52
|
end
|
data/lib/compony/engine.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
+
module ::Components; end
|
2
|
+
|
1
3
|
module Compony
|
2
4
|
class Engine < Rails::Engine
|
3
5
|
initializer 'compony.configure_eager_load_paths', before: :load_environment_hook, group: :all do
|
4
6
|
# Allow app/components/foo/bar.rb to define constants Components::Foo::Bar and make sure components are eager loaded (needed for route generation etc.)
|
5
|
-
Rails.
|
6
|
-
Rails.application.config.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
Rails.autoloaders.main.push_dir(Rails.root.join('app', 'components'), namespace: ::Components)
|
8
|
+
unless Rails.application.config.eager_load
|
9
|
+
Rails.application.config.to_prepare do
|
10
|
+
Rails.autoloaders.main.eager_load_dir(Rails.root.join('app', 'components'))
|
11
|
+
end
|
12
|
+
end
|
11
13
|
end
|
12
14
|
|
13
15
|
initializer 'compony.controller_mixin' do
|
@@ -24,27 +24,20 @@ module Compony
|
|
24
24
|
|
25
25
|
def schema_line
|
26
26
|
local_schema_key = @schema_key # Capture schema_key as it will not be available within the lambda
|
27
|
-
target_primary_key_type = @target_class.primary_key_type_key
|
28
27
|
if multi?
|
29
28
|
return proc do
|
30
29
|
ary? local_schema_key do
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
list :string
|
35
|
-
else
|
36
|
-
fail("Unsupported target primary_key_type_key #{target_primary_key_type}")
|
30
|
+
list :any_of do
|
31
|
+
int cast_str: true
|
32
|
+
str
|
37
33
|
end
|
38
34
|
end
|
39
35
|
end
|
40
36
|
else
|
41
37
|
return proc do
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
str? local_schema_key
|
46
|
-
else
|
47
|
-
fail("Unsupported target primary_key_type_key #{target_primary_key_type}")
|
38
|
+
any_of? local_schema_key do
|
39
|
+
str
|
40
|
+
int cast_str: true
|
48
41
|
end
|
49
42
|
end
|
50
43
|
end
|
@@ -66,11 +59,8 @@ module Compony
|
|
66
59
|
@association = true
|
67
60
|
association_info = @model_class.reflect_on_association(@name) || fail("Association #{@name.inspect} does not exist for #{@model_class.inspect}.")
|
68
61
|
@multi = association_info.macro == :has_many
|
69
|
-
@target_class = association_info.klass
|
70
62
|
id_name = "#{@name.to_s.singularize}_id"
|
71
63
|
@schema_key = @multi ? id_name.pluralize.to_sym : id_name.to_sym
|
72
|
-
rescue ActiveRecord::NoDatabaseError
|
73
|
-
Rails.logger.warn('Warning: Compony could not auto-detect fields due to missing database. This is ok when running db:create.')
|
74
64
|
end
|
75
65
|
end
|
76
66
|
end
|
data/lib/compony/model_mixin.rb
CHANGED
@@ -5,7 +5,6 @@ module Compony
|
|
5
5
|
included do
|
6
6
|
class_attribute :fields, default: {}
|
7
7
|
class_attribute :feasibility_preventions, default: {}
|
8
|
-
class_attribute :primary_key_type_key, default: :integer
|
9
8
|
class_attribute :owner_model_attr
|
10
9
|
|
11
10
|
class_attribute :autodetect_feasibilities_completed, default: false
|
@@ -27,14 +26,6 @@ module Compony
|
|
27
26
|
fields[name] = Compony.model_field_class_for(type.to_s.camelize).new(name, self, **extra_attrs)
|
28
27
|
end
|
29
28
|
|
30
|
-
# DSL method, sets the primary key type
|
31
|
-
def primary_key_type(new_type)
|
32
|
-
unless %i[integer string].include?(new_type.to_sym)
|
33
|
-
fail("#{self} is declaring primary_key_type as #{new_type.inspect} but only :integer and :string are supported at this time.")
|
34
|
-
end
|
35
|
-
self.primary_key_type_key = new_type.to_sym
|
36
|
-
end
|
37
|
-
|
38
29
|
# DSL method, sets the containing model.
|
39
30
|
# Use this when a model only makes sense within the context of another model and typically has no own index page.
|
40
31
|
# For instance, a model LineItem that belongs_to :invoice would typically be owned_by :invoice.
|
data/lib/compony/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compony
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sandro Kalbermatter
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-11-
|
12
|
+
date: 2023-11-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: yard
|
@@ -53,6 +53,20 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 2.18.0
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rails
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 7.1.2
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: 7.1.2
|
56
70
|
- !ruby/object:Gem::Dependency
|
57
71
|
name: request_store
|
58
72
|
requirement: !ruby/object:Gem::Requirement
|