brick 1.0.185 → 1.0.186
Sign up to get free protection for your applications and to get access to all the features.
- 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
|