brick 1.0.185 → 1.0.186
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 +12 -6
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +38 -23
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5a41639892f2e1b8c16c55334cd7cb50f9bfd3a5bffd1eb093764deaad606d1
|
4
|
+
data.tar.gz: 4a18ba9341e71fb00bbc6dde1686b561de8cdd9b898905c680ba85f83cabf394
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c30f5f19ca9f5fe716d32d5efc5b0bc3a7d8addeeb9a8798cb34dc23efcc6abb92391854e899269875ccc2319b36b7361068e9ad17ad5d6245b16bf4ac7aaa89
|
7
|
+
data.tar.gz: d66d5544a948ad006294c654f8b7333b67b1a630c718c525a5fe40032414e4d307c0fe0aab70fcec47add3cd1feaed389ae3af75f69e3b480dbd4be3fc50a0a0
|
data/lib/brick/extensions.rb
CHANGED
@@ -317,10 +317,15 @@ module ActiveRecord
|
|
317
317
|
tbl_parts[-1] = aps
|
318
318
|
tbl_parts << last_part
|
319
319
|
end
|
320
|
-
|
320
|
+
path_prefix = []
|
321
|
+
if ::Brick.config.path_prefix
|
322
|
+
tbl_parts.unshift(::Brick.config.path_prefix)
|
323
|
+
path_prefix << ::Brick.config.path_prefix
|
324
|
+
end
|
321
325
|
index = tbl_parts.map(&:underscore).join(separator)
|
322
|
-
# Rails applies an _index suffix to that route when the resource name
|
323
|
-
index << '_index' if mode != :singular && separator == '_' &&
|
326
|
+
# Rails applies an _index suffix to that route when the resource name isn't something plural
|
327
|
+
index << '_index' if mode != :singular && separator == '_' &&
|
328
|
+
index == (path_prefix + [name&.underscore&.tr('/', '_') || '_']).join(separator)
|
324
329
|
index
|
325
330
|
end
|
326
331
|
|
@@ -2044,9 +2049,10 @@ class Object
|
|
2044
2049
|
_schema, @_is_show_schema_list = ::Brick.set_db_schema(params || api_params)
|
2045
2050
|
|
2046
2051
|
if is_openapi
|
2047
|
-
|
2048
|
-
|
2049
|
-
|
2052
|
+
doc_endpoints = (Object.const_defined?('Rswag::Ui') &&
|
2053
|
+
(::Rswag::Ui.config.config_object[:urls])) ||
|
2054
|
+
::Brick.instance_variable_get(:@swagger_endpoints)
|
2055
|
+
api_name = doc_endpoints&.find { |api_url| api_url[:url] == request.path }&.fetch(:name, 'API documentation')
|
2050
2056
|
current_api_ver = current_api_root.split('/').last&.[](1..-1).to_i
|
2051
2057
|
json = { 'openapi': '3.0.1', 'info': { 'title': api_name, 'version': request_ver },
|
2052
2058
|
'servers': [
|
data/lib/brick/version_number.rb
CHANGED
data/lib/brick.rb
CHANGED
@@ -210,7 +210,10 @@ module Brick
|
|
210
210
|
puts "Based on inclusion in ::Brick.polymorphics, marking association #{full_assoc_name} as being polymorphic."
|
211
211
|
a.options[:polymorphic] = true
|
212
212
|
end
|
213
|
-
if
|
213
|
+
if (through = a.options[:through]) && !a.through_reflection
|
214
|
+
puts "WARNING: In model #{model.name}, unable to utilise: has_many #{a.name}, through: #{through.inspect}"
|
215
|
+
end
|
216
|
+
if !a.polymorphic? && (a.belongs_to? || (through && a.through_reflection)) &&
|
214
217
|
!(a.klass && ::Brick.config.exclude_tables.exclude?(a.klass.table_name) &&
|
215
218
|
(!a.belongs_to? ||
|
216
219
|
((fk_type = a.foreign_key.is_a?(Array) ? a.foreign_key.map { |fk_part| model_cols[fk_part.to_s].type } : model_cols[a.foreign_key.to_s].type) &&
|
@@ -280,7 +283,7 @@ module Brick
|
|
280
283
|
is_invalid_source = true
|
281
284
|
end
|
282
285
|
if is_invalid_source
|
283
|
-
puts "
|
286
|
+
puts " due to invalid source #{a.source_reflection_name.inspect}."
|
284
287
|
next
|
285
288
|
end
|
286
289
|
else
|
@@ -323,6 +326,12 @@ module Brick
|
|
323
326
|
true
|
324
327
|
end
|
325
328
|
|
329
|
+
# Add a swagger endpoint in the same kind of way that RSwag UI does
|
330
|
+
def swagger_endpoint(url, name)
|
331
|
+
@swagger_endpoints ||= []
|
332
|
+
@swagger_endpoints << { url: url, name: name }
|
333
|
+
end
|
334
|
+
|
326
335
|
def is_geography?(val)
|
327
336
|
val.length < 31 && (val.length - 6) % 8 == 0 && val[0..5].bytes == [230, 16, 0, 0, 1, 12]
|
328
337
|
end
|
@@ -1132,39 +1141,45 @@ In config/initializers/brick.rb appropriate entries would look something like:
|
|
1132
1141
|
get("/#{controller_prefix}brick_crosstab/data", to: 'brick_gem#crosstab_data')
|
1133
1142
|
end
|
1134
1143
|
|
1135
|
-
if Object.const_defined?('Rswag::Ui')
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1144
|
+
if ((rswag_ui_present = Object.const_defined?('Rswag::Ui')) &&
|
1145
|
+
(rswag_path = routeset_to_use.routes.find { |r| r.app.app == ::Rswag::Ui::Engine }
|
1146
|
+
&.instance_variable_get(:@path_formatter)
|
1147
|
+
&.instance_variable_get(:@parts)&.join) &&
|
1148
|
+
(doc_endpoints = ::Rswag::Ui.config.config_object[:urls])) ||
|
1149
|
+
(doc_endpoints = ::Brick.instance_variable_get(:@swagger_endpoints))
|
1150
|
+
last_endpoint_parts = nil
|
1151
|
+
doc_endpoints.each do |doc_endpoint|
|
1139
1152
|
puts "Mounting OpenApi 3.0 documentation endpoint for \"#{doc_endpoint[:name]}\" on #{doc_endpoint[:url]}" unless ::Brick.routes_done
|
1140
1153
|
send(:get, doc_endpoint[:url], { to: 'brick_openapi#index' })
|
1141
1154
|
endpoint_parts = doc_endpoint[:url]&.split('/')
|
1142
|
-
|
1155
|
+
last_endpoint_parts = endpoint_parts
|
1143
1156
|
end
|
1144
1157
|
end
|
1145
1158
|
return if ::Brick.routes_done
|
1146
1159
|
|
1147
|
-
if
|
1148
|
-
if
|
1149
|
-
if rswag_path
|
1150
|
-
puts "API documentation now available when navigating to: /#{
|
1160
|
+
if doc_endpoints.present?
|
1161
|
+
if rswag_ui_present
|
1162
|
+
if rswag_path
|
1163
|
+
puts "API documentation now available when navigating to: /#{last_endpoint_parts&.find(&:present?)}/index.html"
|
1151
1164
|
else
|
1152
1165
|
puts "In order to make documentation available you can put this into your routes.rb:"
|
1153
|
-
puts " mount Rswag::Ui::Engine => '/#{
|
1166
|
+
puts " mount Rswag::Ui::Engine => '/#{last_endpoint_parts&.find(&:present?) || 'api-docs'}'"
|
1154
1167
|
end
|
1155
1168
|
else
|
1156
|
-
|
1169
|
+
puts 'A couple easy ways to create compelling documentation from this are to use Scalar API, or to add the rswag-ui gem.'
|
1170
|
+
end
|
1171
|
+
elsif rswag_ui_present
|
1172
|
+
sample_path = rswag_path || '/api-docs'
|
1173
|
+
puts
|
1174
|
+
puts "Brick: rswag-ui gem detected -- to make OpenAPI 3.0 documentation available from a path such as '#{sample_path}/v1/swagger.json',"
|
1175
|
+
puts ' put code such as this in an initializer:'
|
1176
|
+
puts ' Rswag::Ui.configure do |config|'
|
1177
|
+
puts " config.swagger_endpoint '#{sample_path}/v1/swagger.json', 'API V1 Docs'"
|
1178
|
+
puts ' end'
|
1179
|
+
unless rswag_path
|
1157
1180
|
puts
|
1158
|
-
puts
|
1159
|
-
puts
|
1160
|
-
puts ' Rswag::Ui.configure do |config|'
|
1161
|
-
puts " config.swagger_endpoint '#{sample_path}/v1/swagger.json', 'API V1 Docs'"
|
1162
|
-
puts ' end'
|
1163
|
-
unless rswag_path
|
1164
|
-
puts
|
1165
|
-
puts ' and put this into your routes.rb:'
|
1166
|
-
puts " mount Rswag::Ui::Engine => '/api-docs'"
|
1167
|
-
end
|
1181
|
+
puts ' and put this into your routes.rb:'
|
1182
|
+
puts " mount Rswag::Ui::Engine => '/api-docs'"
|
1168
1183
|
end
|
1169
1184
|
end
|
1170
1185
|
|
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.186
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|