brick 1.0.223 → 1.0.224
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/lib/brick/extensions.rb +9 -7
- data/lib/brick/rails/engine.rb +28 -10
- data/lib/brick/rails/form_builder.rb +6 -2
- data/lib/brick/rails.rb +1 -1
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 571fea9051ed0e8037ba73f0d3010f22f29b417b6def200fcf63894dced9289e
|
|
4
|
+
data.tar.gz: 6bace7cf19e59ca209a9b6395a7fce3324e4ca77bf13bd8a21bf7b3f0fe6604a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4ed1f0d0711c39d1174cf3306dd0c698ccc832478c32432eb84ce5a01a704da9fb24e9fda05d2986fe822fe21876aa34de4a0900f5cdacb1255446a74c07b2b9
|
|
7
|
+
data.tar.gz: 3b77a0656498452157fe25fb3c8c894acb8ee17fad51e6e203123d31d9d108fe59e8a7b1f265e4e168ab82c2d85cf461983079f7e753075d54ac6366d3e6d5e5
|
data/lib/brick/extensions.rb
CHANGED
|
@@ -1658,7 +1658,7 @@ class Object
|
|
|
1658
1658
|
end
|
|
1659
1659
|
plural_class_name = ActiveSupport::Inflector.pluralize(model_name = class_name)
|
|
1660
1660
|
# gsub is so that if it's namespaced then we turn the first part into what would be a schema name
|
|
1661
|
-
singular_table_name = ::Brick.table_name_lookup
|
|
1661
|
+
singular_table_name = ::Brick.table_name_lookup&.fetch(model_name, nil) || ActiveSupport::Inflector.underscore(model_name).gsub('/', '.')
|
|
1662
1662
|
|
|
1663
1663
|
if base_model
|
|
1664
1664
|
table_name = base_model.table_name
|
|
@@ -2518,10 +2518,11 @@ class Object
|
|
|
2518
2518
|
code << " def show\n"
|
|
2519
2519
|
code << " #{find_by_name = "find_#{singular_table_name}"}\n"
|
|
2520
2520
|
code << " end\n"
|
|
2521
|
+
find_obj = "find_#{singular_table_name}"
|
|
2521
2522
|
self.define_method :show do
|
|
2522
2523
|
_schema, @_is_show_schema_list = ::Brick.set_db_schema(params)
|
|
2523
2524
|
_, singular_table_name = model.real_singular(params)
|
|
2524
|
-
instance_variable_set("@#{singular_table_name}".to_sym, find_obj)
|
|
2525
|
+
instance_variable_set("@#{singular_table_name}".to_sym, send(find_obj))
|
|
2525
2526
|
add_csp_hash("'unsafe-inline'")
|
|
2526
2527
|
end
|
|
2527
2528
|
end
|
|
@@ -2614,7 +2615,7 @@ class Object
|
|
|
2614
2615
|
self.define_method :edit do
|
|
2615
2616
|
_schema, @_is_show_schema_list = ::Brick.set_db_schema(params)
|
|
2616
2617
|
_, singular_table_name = model.real_singular(params)
|
|
2617
|
-
instance_variable_set("@#{singular_table_name}".to_sym, find_obj)
|
|
2618
|
+
instance_variable_set("@#{singular_table_name}".to_sym, send(find_obj))
|
|
2618
2619
|
add_csp_hash
|
|
2619
2620
|
end
|
|
2620
2621
|
|
|
@@ -2642,7 +2643,7 @@ class Object
|
|
|
2642
2643
|
end
|
|
2643
2644
|
|
|
2644
2645
|
_, singular_table_name = model.real_singular(params)
|
|
2645
|
-
instance_variable_set("@#{singular_table_name}".to_sym, (obj = find_obj))
|
|
2646
|
+
instance_variable_set("@#{singular_table_name}".to_sym, (obj = send(find_obj)))
|
|
2646
2647
|
upd_params = send(params_name_sym)
|
|
2647
2648
|
json_overrides = ::Brick.config.json_columns&.fetch(table_name, nil)
|
|
2648
2649
|
if model.respond_to?(:devise_modules)
|
|
@@ -2688,7 +2689,7 @@ class Object
|
|
|
2688
2689
|
code << " end\n"
|
|
2689
2690
|
self.define_method :destroy do
|
|
2690
2691
|
::Brick.set_db_schema(params)
|
|
2691
|
-
if (obj = find_obj).send(:destroy)
|
|
2692
|
+
if (obj = send(find_obj)).send(:destroy)
|
|
2692
2693
|
redirect_to send("#{model._brick_index}_path".to_sym)
|
|
2693
2694
|
else
|
|
2694
2695
|
redirect_to send("#{model._brick_index(:singular)}_path".to_sym, obj)
|
|
@@ -2699,11 +2700,11 @@ class Object
|
|
|
2699
2700
|
code << "private\n" if pk.present? || is_need_params
|
|
2700
2701
|
|
|
2701
2702
|
if pk.present?
|
|
2702
|
-
code << " def
|
|
2703
|
+
code << " def #{find_obj}
|
|
2703
2704
|
id = params[:id]&.split(/[\\/,_]/)
|
|
2704
2705
|
@#{singular_table_name} = #{model.name}.find(id.is_a?(Array) && id.length == 1 ? id.first : id)
|
|
2705
2706
|
end\n"
|
|
2706
|
-
self.define_method
|
|
2707
|
+
self.define_method(find_obj) do
|
|
2707
2708
|
id = if pk.length == 1 # && model.columns_hash[pk.first]&.type == :string
|
|
2708
2709
|
params[:id].gsub('^^sl^^', '/')
|
|
2709
2710
|
else
|
|
@@ -2723,6 +2724,7 @@ class Object
|
|
|
2723
2724
|
model.find(id_simplified)
|
|
2724
2725
|
end
|
|
2725
2726
|
end
|
|
2727
|
+
private find_obj
|
|
2726
2728
|
end
|
|
2727
2729
|
|
|
2728
2730
|
if is_need_params
|
data/lib/brick/rails/engine.rb
CHANGED
|
@@ -106,6 +106,16 @@ function linkSchemas() {
|
|
|
106
106
|
load inflections
|
|
107
107
|
end
|
|
108
108
|
require 'brick/join_array'
|
|
109
|
+
|
|
110
|
+
# Load it once at the start for Rails >= 7.2 ...
|
|
111
|
+
Module.class_exec &::Brick::ADD_CONST_MISSING if ActiveRecord.version >= Gem::Version.new('7.2.0')
|
|
112
|
+
# ... and also for Rails >= 5.0, whenever the app gets reloaded
|
|
113
|
+
if ::Rails.application.respond_to?(:reloader)
|
|
114
|
+
::Rails.application.reloader.to_prepare { Module.class_exec &::Brick::ADD_CONST_MISSING }
|
|
115
|
+
else
|
|
116
|
+
Module.class_exec &::Brick::ADD_CONST_MISSING # Older Rails -- just load at the start
|
|
117
|
+
end
|
|
118
|
+
|
|
109
119
|
# Now the Brick initializer since there may be important schema things configured
|
|
110
120
|
if !::Brick.initializer_loaded && File.exist?(brick_initializer = ::Rails.root&.join('config/initializers/brick.rb') || '')
|
|
111
121
|
::Brick.initializer_loaded = load brick_initializer
|
|
@@ -180,12 +190,6 @@ function linkSchemas() {
|
|
|
180
190
|
::Brick.established_drf = "/#{::Brick.config.path_prefix}#{action[action.index('#')..-1]}"
|
|
181
191
|
end
|
|
182
192
|
end
|
|
183
|
-
|
|
184
|
-
Module.class_exec &::Brick::ADD_CONST_MISSING # Load it once at the start ...
|
|
185
|
-
# ... and also for Rails >= 5.0, whenever the app gets reloaded
|
|
186
|
-
if ::Rails.application.respond_to?(:reloader)
|
|
187
|
-
::Rails.application.reloader.to_prepare { Module.class_exec &::Brick::ADD_CONST_MISSING }
|
|
188
|
-
end
|
|
189
193
|
end
|
|
190
194
|
|
|
191
195
|
# After we're initialized and before running the rest of stuff, put our configuration in place
|
|
@@ -632,10 +636,17 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
|
632
636
|
|
|
633
637
|
def path_keys(hm_assoc, fk_name, pk)
|
|
634
638
|
pk.map!(&:to_sym)
|
|
635
|
-
keys = if
|
|
636
|
-
|
|
639
|
+
keys = if hm_assoc.macro == :has_and_belongs_to_many
|
|
640
|
+
# %%% Can a HABTM use composite keys?
|
|
641
|
+
# (If so then this should be rewritten to do a .zip() )
|
|
642
|
+
name_from_other_direction = hm_assoc.klass.reflect_on_all_associations.find { |a| a.join_table == hm_assoc.join_table }&.name
|
|
643
|
+
[["#{name_from_other_direction}.#{pk.first}", pk.first]]
|
|
637
644
|
else
|
|
638
|
-
|
|
645
|
+
if fk_name.is_a?(Array) && pk.is_a?(Array) # Composite keys?
|
|
646
|
+
fk_name.zip(pk)
|
|
647
|
+
else
|
|
648
|
+
[[fk_name, pk.length == 1 ? pk.first : pk.inspect]]
|
|
649
|
+
end
|
|
639
650
|
end
|
|
640
651
|
if hm_assoc.options.key?(:as) && !(hmaar = hm_assoc.active_record).abstract_class?
|
|
641
652
|
poly_type = if hmaar.column_names.include?(hmaar.inheritance_column)
|
|
@@ -689,7 +700,14 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
|
689
700
|
skip_klass_hms = ::Brick.config.skip_index_hms[model_name] || {}
|
|
690
701
|
hms_headers = hms.each_with_object([]) do |hm, s|
|
|
691
702
|
hm_stuff = [(hm_assoc = hm.last),
|
|
692
|
-
"H#{hm_assoc.macro
|
|
703
|
+
"H#{case hm_assoc.macro
|
|
704
|
+
when :has_one
|
|
705
|
+
'O'
|
|
706
|
+
when :has_and_belongs_to_many
|
|
707
|
+
'ABTM'
|
|
708
|
+
else
|
|
709
|
+
'M'
|
|
710
|
+
end}#{'T' if hm_assoc.options[:through]}",
|
|
693
711
|
(assoc_name = hm.first)]
|
|
694
712
|
hm_fk_name = if (through = hm_assoc.options[:through])
|
|
695
713
|
next unless @_brick_model.instance_methods.include?(through) &&
|
|
@@ -76,8 +76,12 @@ module Brick::Rails::FormBuilder
|
|
|
76
76
|
out << self.hidden_field(method.to_sym, html_options)
|
|
77
77
|
out << "<trix-editor input=\"#{self.field_id(method)}\"></trix-editor>"
|
|
78
78
|
end
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
if spit_out_text_field
|
|
80
|
+
# %%% Need to update the max-width with javascript when page width is adjusted?
|
|
81
|
+
html_options.merge!(style: 'min-width: 154px;field-sizing: content;') # max-width: auto;
|
|
82
|
+
out << self.text_field(method.to_sym, html_options)
|
|
83
|
+
end
|
|
84
|
+
when :boolean
|
|
81
85
|
out << self.check_box(method.to_sym)
|
|
82
86
|
when :integer, :decimal, :float
|
|
83
87
|
if model.respond_to?(:attribute_types) && (enum_type = model.attribute_types[method]).is_a?(ActiveRecord::Enum::EnumType)
|
data/lib/brick/rails.rb
CHANGED
|
@@ -167,7 +167,7 @@ erDiagram
|
|
|
167
167
|
%> <%= \"#\{through_name} }o--|| #\{hm_name}\".html_safe %> : \"\"
|
|
168
168
|
<%= \"#{model_short_name} }o..o{ #\{hm_name} : \\\"#\{hm.first}\\\"\".html_safe %><%
|
|
169
169
|
else # has_many
|
|
170
|
-
%> <%= \"#{model_short_name}
|
|
170
|
+
%> <%= \"#{model_short_name} #\{hm.last.macro == :has_and_belongs_to_many ? '}o' : '||'}--o{ #\{hm_name} : \\\"#\{
|
|
171
171
|
hm.first.to_s unless (last_hm = hm.first.to_s).downcase == hm_class.name.underscore.pluralize.tr('/', '_')
|
|
172
172
|
}\\\"\".html_safe %><%
|
|
173
173
|
end %>
|
data/lib/brick/version_number.rb
CHANGED
data/lib/brick.rb
CHANGED
|
@@ -297,7 +297,7 @@ module Brick
|
|
|
297
297
|
puts " due to invalid source #{a.source_reflection_name.inspect}."
|
|
298
298
|
next
|
|
299
299
|
end
|
|
300
|
-
|
|
300
|
+
elsif a.macro != :has_and_belongs_to_many
|
|
301
301
|
this_fks = (this_fk = a.foreign_key).is_a?(Array) ? this_fk.uniq : [this_fk.to_s]
|
|
302
302
|
if !a.options.key?(:as) && a.klass.table_exists? && (this_fks - a.klass.column_names).length.positive?
|
|
303
303
|
options = ", #{a.options.map { |k, v| "#{k.inspect} => #{v.inspect}" }.join(', ')}" if a.options.present?
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: brick
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.224
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lorin Thwaits
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-12-
|
|
11
|
+
date: 2024-12-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|
|
@@ -257,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
257
257
|
- !ruby/object:Gem::Version
|
|
258
258
|
version: 1.3.6
|
|
259
259
|
requirements: []
|
|
260
|
-
rubygems_version: 3.
|
|
260
|
+
rubygems_version: 3.1.6
|
|
261
261
|
signing_key:
|
|
262
262
|
specification_version: 4
|
|
263
263
|
summary: Create a Rails app from data alone
|