wallaby 5.1.3 → 5.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 918ba41ac5ba7f6971332674647888cc6f989126
4
- data.tar.gz: 44c4f9006a6628ea19d26134d1fa9d8acd1e1511
3
+ metadata.gz: '09976f4239802ee3dc2eb137068c2f6289f0cf7a'
4
+ data.tar.gz: 724958b07b53194c30c6ccc9bf314791ae0c894e
5
5
  SHA512:
6
- metadata.gz: dfddc7545545924c353c5c41a000ed5f9a97c986c9713898c13c0e82abbec0df36652445aa38540241ca8c08c7f937c917b6d43449764c99c55639a74fe49465
7
- data.tar.gz: 0170cdf8218bb7881a5fa56fb8605520f2e1358b9719e0296825f9f063021af0b9f6c8feb63c2eb8407b203a6a4f0a0ecdd4f7a9554d4d16c368a091744d14a6
6
+ metadata.gz: 2c83059d14238fa032b1a41d44b2809cbbb5b27613335498e8f550296d974a4168697a6b7952f12f6424b7ebbf04f479184911e2c417cc2cbb65c7fc8f2cb914
7
+ data.tar.gz: 147288bc92b01a8b9a8f98ce3d9f134e57dca63a1fafea891bb0916b6b79d3449cc3d8ac0d9cd3578871fd51d0a6ecb224a167835dd580d8a6dab2fc79984d9a
@@ -286,11 +286,9 @@ module Wallaby
286
286
  # given, or requesting HTML response
287
287
  # @see Wallaby::ModelServicer#paginate
288
288
  def paginate(query)
289
- if params[:page] || params[:per] || request.format.symbol == :html
290
- current_model_service.paginate(query, params)
291
- else
292
- query
293
- end
289
+ paginatable =
290
+ params[:page] || params[:per] || request.format.symbol == :html
291
+ paginatable ? current_model_service.paginate(query, params) : query
294
292
  end
295
293
 
296
294
  # To whitelist the params for CRUD actions
@@ -311,12 +309,14 @@ module Wallaby
311
309
 
312
310
  # @return either persisted or unpersisted resource instance
313
311
  def resource
314
- @resource ||=
312
+ @resource ||= begin
313
+ whitelisted = action_name.in?(SAVE_ACTIONS) ? resource_params : {}
315
314
  if resource_id.present?
316
- current_model_service.find resource_id, resource_params
315
+ current_model_service.find resource_id, whitelisted
317
316
  else
318
- current_model_service.new resource_params
317
+ current_model_service.new whitelisted
319
318
  end
319
+ end
320
320
  end
321
321
 
322
322
  # Get current model decorator so that we could retrive metadata for given
@@ -8,12 +8,10 @@ module Wallaby
8
8
 
9
9
  ERROR_PATH = ERROR_LAYOUT = 'wallaby/error'.freeze
10
10
 
11
- # NOTE: we want to see the error blown up in development environment
12
- unless Rails.env.development?
13
- rescue_from NotFound, with: :not_found
14
- rescue_from ::ActionController::ParameterMissing, with: :bad_request
15
- rescue_from ::ActiveRecord::StatementInvalid, with: :unprocessable_entity
16
- end
11
+ rescue_from NotFound, with: :not_found
12
+ rescue_from ::ActionController::ParameterMissing, with: :bad_request
13
+ rescue_from ::ActiveRecord::StatementInvalid, with: :unprocessable_entity
14
+ rescue_from UnprocessableEntity, with: :unprocessable_entity
17
15
 
18
16
  layout 'wallaby/application'
19
17
 
@@ -34,6 +32,12 @@ module Wallaby
34
32
 
35
33
  protected
36
34
 
35
+ # @see https://github.com/rails/rails/blob/5-0-stable/actionpack/lib/action_controller/metal/helpers.rb#L118
36
+ # `helpers` exists since Rails 5, need to replicate this for Rails 4.2
37
+ def helpers
38
+ @helpers ||= defined?(super) ? super : view_context
39
+ end
40
+
37
41
  def configuration
38
42
  ::Wallaby.configuration
39
43
  end
@@ -24,6 +24,8 @@ en:
24
24
  count: 'Count: '
25
25
  auto_select_hint: 'Type to select...'
26
26
  upload: 'Upload'
27
+ empty: 'null'
28
+ na: 'n/a'
27
29
 
28
30
  buttons:
29
31
  save: 'Save'
@@ -60,6 +62,9 @@ en:
60
62
  collection: 'Records could not be found. Click + button to add one.'
61
63
  model: 'Model %{model} could not be found.'
62
64
  resource: 'Record %{resource} could not be found.'
65
+ unprocessable_entity:
66
+ keyword_search: 'Unable to perform keyword search when no text fields can be used.'
67
+ field_colon_search: 'Unable to perform field colon search for %{invalid_fields}.'
63
68
 
64
69
  pagination:
65
70
  prev: 'Prev'
@@ -12,8 +12,7 @@ module Wallaby
12
12
  metadata = {
13
13
  name: column.name,
14
14
  type: column.type.to_s.freeze,
15
- label: @model_class.human_attribute_name(column.name),
16
- is_origin: true
15
+ label: @model_class.human_attribute_name(column.name)
17
16
  }
18
17
  sti_builder.update(metadata, column)
19
18
  fields[column.name] = metadata
@@ -24,8 +23,7 @@ module Wallaby
24
23
  @model_class.reflections.each_with_object({}) do |(name, ref), fields|
25
24
  metadata = {
26
25
  name: name, type: ref.macro.to_s,
27
- label: @model_class.human_attribute_name(name),
28
- is_origin: true
26
+ label: @model_class.human_attribute_name(name)
29
27
  }
30
28
  association_builder.update(metadata, ref)
31
29
  polymorphic_builder.update(metadata, ref)
@@ -15,13 +15,12 @@ module Wallaby
15
15
  # example:
16
16
  # {
17
17
  # # general field
18
- # id: { name: 'id', type: 'integer', label: 'Id', is_origin: true },
18
+ # id: { name: 'id', type: 'integer', label: 'Id' },
19
19
  # # association field
20
20
  # category: {
21
21
  # 'name' => 'category',
22
22
  # 'type' => 'belongs_to',
23
23
  # 'label' => 'Category',
24
- # 'is_origin' => true,
25
24
  # 'is_association' => true,
26
25
  # 'is_through' => false,
27
26
  # 'has_scope' => false,
@@ -9,10 +9,10 @@ module Wallaby
9
9
 
10
10
  def normalize(params)
11
11
  params.each do |field_name, values|
12
- metadata = @model_decorator.fields[field_name] || EMPTY_HASH
13
- type = (metadata[:type] || EMPTY_STRING)[/range|point|binary/]
12
+ type = @model_decorator.metadata_of(field_name)[:type]
13
+ .try(:[], /range|point|binary/)
14
14
  next unless type
15
- send "normalize_#{type}_values", params, field_name, values
15
+ public_send "normalize_#{type}_values", params, field_name, values
16
16
  end
17
17
  end
18
18
 
@@ -3,7 +3,7 @@ module Wallaby
3
3
  class ModelServiceProvider
4
4
  # Query builder
5
5
  class Querier
6
- TEXT_FIELDS = %w(string text citext).freeze
6
+ TEXT_FIELDS = %w(string text citext longtext tinytext mediumtext).freeze
7
7
 
8
8
  def initialize(model_decorator)
9
9
  @model_decorator = model_decorator
@@ -68,7 +68,7 @@ module Wallaby
68
68
  end
69
69
 
70
70
  def text_search(keywords, query = nil)
71
- return query if keywords.blank?
71
+ return query unless keywords_check? keywords
72
72
  text_fields.each do |field_name|
73
73
  sub_query = nil
74
74
  keywords.each do |keyword|
@@ -81,8 +81,8 @@ module Wallaby
81
81
  end
82
82
 
83
83
  def field_search(field_queries, query)
84
+ return query unless field_check? field_queries
84
85
  field_queries.each do |exp|
85
- next unless @model_decorator.fields[exp[:left]]
86
86
  sub_query = table[exp[:left]].public_send(exp[:op], exp[:right])
87
87
  query = query.try(:and, sub_query) || sub_query
88
88
  end
@@ -90,11 +90,30 @@ module Wallaby
90
90
  end
91
91
 
92
92
  def text_fields
93
- index_field_names = @model_decorator.index_field_names.map(&:to_s)
94
- @model_decorator.fields.select do |field_name, metadata|
95
- index_field_names.include?(field_name) &&
96
- TEXT_FIELDS.include?(metadata[:type].to_s)
97
- end.keys
93
+ @text_fields ||= begin
94
+ index_field_names = @model_decorator.index_field_names.map(&:to_s)
95
+ @model_decorator.fields.select do |field_name, metadata|
96
+ index_field_names.include?(field_name) &&
97
+ TEXT_FIELDS.include?(metadata[:type].to_s)
98
+ end.keys
99
+ end
100
+ end
101
+
102
+ def keywords_check?(keywords)
103
+ return false if keywords.blank?
104
+ return true if text_fields.present?
105
+ message = I18n.t 'errors.unprocessable_entity.keyword_search'
106
+ raise UnprocessableEntity, message
107
+ end
108
+
109
+ def field_check?(field_queries)
110
+ return false if field_queries.blank?
111
+ fields = field_queries.map { |exp| exp[:left] }
112
+ invalid_fields = fields - @model_decorator.fields.keys
113
+ return true if invalid_fields.blank?
114
+ message = I18n.t 'errors.unprocessable_entity.field_colon_search',
115
+ invalid_fields: invalid_fields.to_sentence
116
+ raise UnprocessableEntity, message
98
117
  end
99
118
  end
100
119
  end
@@ -5,9 +5,7 @@ module Wallaby
5
5
  class ModelServiceProvider < ::Wallaby::ModelServiceProvider
6
6
  # @see Wallaby::ModelServiceProvider#permit
7
7
  def permit(params)
8
- return {} if params[param_key].blank?
9
- # using fetch could avoid ActionController::ParameterMissing
10
- params.fetch(param_key, {}).permit permitted_fields
8
+ params.require(param_key).permit permitted_fields
11
9
  end
12
10
 
13
11
  # @see Wallaby::ModelServiceProvider#collection
@@ -1,4 +1,4 @@
1
1
  module Wallaby
2
- class InvalidError < ::StandardError
2
+ class InvalidError < GeneralError
3
3
  end
4
4
  end
@@ -0,0 +1,4 @@
1
+ module Wallaby
2
+ class UnprocessableEntity < GeneralError
3
+ end
4
+ end
@@ -5,9 +5,11 @@ module Wallaby
5
5
  # @param user [Object]
6
6
  # @return [String] IMG or I element
7
7
  def user_portrait(user = current_user)
8
- if user.respond_to? :email
8
+ email_method = Wallaby.configuration.security.email_method || :email
9
+ email = user.respond_to?(email_method) && user.public_send(email_method)
10
+ if email.present?
9
11
  https = "http#{request.ssl? ? 's' : EMPTY_STRING}"
10
- email_md5 = Digest::MD5.hexdigest user.email.downcase
12
+ email_md5 = ::Digest::MD5.hexdigest email.downcase
11
13
  image_source = "#{https}://www.gravatar.com/avatar/#{email_md5}"
12
14
  image_tag image_source, class: 'hidden-xs user-portrait'
13
15
  else
@@ -20,23 +22,23 @@ module Wallaby
20
22
  # @param app [Object]
21
23
  # @return [String] HTML anchor element
22
24
  def logout_path(user = current_user, app = main_app)
23
- # TODO: use authenticater
24
- path =
25
- if defined? ::Devise
26
- scope = ::Devise::Mapping.find_scope! user
27
- "destroy_#{scope}_session_path"
28
- else
29
- 'logout_path'
30
- end
31
- app.public_send path if app.respond_to? path
25
+ path = Wallaby.configuration.security.logout_path
26
+ path ||= if defined? ::Devise
27
+ scope = ::Devise::Mapping.find_scope! user
28
+ "destroy_#{scope}_session_path"
29
+ end
30
+ app.public_send path if path && app.respond_to?(path)
32
31
  end
33
32
 
34
- # Logout method
33
+ # Logout method for given user
35
34
  # @return [String, Symbol]
36
- def logout_method
37
- # TODO: use authenticater
38
- method = Array(Devise.sign_out_via).first if defined? Devise
39
- method || :delete
35
+ def logout_method(user = current_user)
36
+ http_method = Wallaby.configuration.security.logout_method
37
+ http_method || if defined? ::Devise
38
+ scope = ::Devise::Mapping.find_scope! user
39
+ mapping = ::Devise.mappings[scope]
40
+ mapping.sign_out_via
41
+ end
40
42
  end
41
43
  end
42
44
  end
@@ -48,12 +48,12 @@ module Wallaby
48
48
 
49
49
  # @return [String] grey null
50
50
  def null
51
- muted 'null'
51
+ muted t 'labels.empty'
52
52
  end
53
53
 
54
54
  # @return [String] grey N/A
55
55
  def na
56
- muted 'n/a'
56
+ muted t 'labels.na'
57
57
  end
58
58
 
59
59
  # Grey text
@@ -0,0 +1,70 @@
1
+ module Wallaby
2
+ # @private
3
+ class ModelDecorator
4
+ # @private
5
+ # Field helper for model decorator
6
+ module FieldHelpers
7
+ # @return [Hash] metadata information for a given field
8
+ def metadata_of(field_name)
9
+ fields[field_name] || {}
10
+ end
11
+
12
+ # @return [String] label for a given field
13
+ def label_of(field_name)
14
+ metadata_of(field_name)[:label]
15
+ end
16
+
17
+ # @return [String, Symbol] type for a given field
18
+ def type_of(field_name)
19
+ validate_presence_of metadata_of(field_name)[:type]
20
+ end
21
+
22
+ # @return [Hash] index metadata information for a given field
23
+ def index_metadata_of(field_name)
24
+ index_fields[field_name] || {}
25
+ end
26
+
27
+ # @return [String] index label for a given field
28
+ def index_label_of(field_name)
29
+ index_metadata_of(field_name)[:label]
30
+ end
31
+
32
+ # @return [String, Symbol] index type for a given field
33
+ def index_type_of(field_name)
34
+ validate_presence_of index_metadata_of(field_name)[:type]
35
+ end
36
+
37
+ # @return [Hash] show metadata information for a given field
38
+ def show_metadata_of(field_name)
39
+ show_fields[field_name] || {}
40
+ end
41
+
42
+ # @return [String] show label for a given field
43
+ def show_label_of(field_name)
44
+ show_metadata_of(field_name)[:label]
45
+ end
46
+
47
+ # @return [String, Symbol] show type for a given field
48
+ def show_type_of(field_name)
49
+ validate_presence_of show_metadata_of(field_name)[:type]
50
+ end
51
+
52
+ # @return [Hash] form metadata information for a given field
53
+ def form_metadata_of(field_name)
54
+ form_fields[field_name] || {}
55
+ end
56
+
57
+ # @return [String] form label for a given field
58
+ def form_label_of(field_name)
59
+ form_metadata_of(field_name)[:label]
60
+ end
61
+
62
+ # @return [String, Symbol] form type for a given field
63
+ def form_type_of(field_name)
64
+ validate_presence_of form_metadata_of(field_name)[:type]
65
+ end
66
+ end
67
+
68
+ include FieldHelpers
69
+ end
70
+ end
@@ -28,21 +28,6 @@ module Wallaby
28
28
  @field_names ||= reposition fields.keys, primary_key
29
29
  end
30
30
 
31
- # @return [Hash] metadata information for a given field
32
- def metadata_of(field_name)
33
- fields[field_name] || {}
34
- end
35
-
36
- # @return [String] label for a given field
37
- def label_of(field_name)
38
- metadata_of(field_name)[:label]
39
- end
40
-
41
- # @return [String, Symbol] type for a given field
42
- def type_of(field_name)
43
- validate_presence_of metadata_of(field_name)[:type]
44
- end
45
-
46
31
  # @return [Hash] metadata information for all fields that would be used on
47
32
  # index page
48
33
  def index_fields
@@ -60,21 +45,6 @@ module Wallaby
60
45
  @index_field_names ||= reposition index_fields.keys, primary_key
61
46
  end
62
47
 
63
- # @return [Hash] index metadata information for a given field
64
- def index_metadata_of(field_name)
65
- index_fields[field_name] || {}
66
- end
67
-
68
- # @return [String] index label for a given field
69
- def index_label_of(field_name)
70
- index_metadata_of(field_name)[:label]
71
- end
72
-
73
- # @return [String, Symbol] index type for a given field
74
- def index_type_of(field_name)
75
- validate_presence_of index_metadata_of(field_name)[:type]
76
- end
77
-
78
48
  # @return [Hash] metadata information for all fields that would be used on
79
49
  # show page
80
50
  def show_fields
@@ -92,21 +62,6 @@ module Wallaby
92
62
  @show_field_names ||= reposition show_fields.keys, primary_key
93
63
  end
94
64
 
95
- # @return [Hash] show metadata information for a given field
96
- def show_metadata_of(field_name)
97
- show_fields[field_name] || {}
98
- end
99
-
100
- # @return [String] show label for a given field
101
- def show_label_of(field_name)
102
- show_metadata_of(field_name)[:label]
103
- end
104
-
105
- # @return [String, Symbol] show type for a given field
106
- def show_type_of(field_name)
107
- validate_presence_of show_metadata_of(field_name)[:type]
108
- end
109
-
110
65
  # @return [Hash] metadata information for all fields that would be used on
111
66
  # form page
112
67
  def form_fields
@@ -124,21 +79,6 @@ module Wallaby
124
79
  @form_field_names ||= reposition form_fields.keys, primary_key
125
80
  end
126
81
 
127
- # @return [Hash] form metadata information for a given field
128
- def form_metadata_of(field_name)
129
- form_fields[field_name] || {}
130
- end
131
-
132
- # @return [String] form label for a given field
133
- def form_label_of(field_name)
134
- form_metadata_of(field_name)[:label]
135
- end
136
-
137
- # @return [String, Symbol] form type for a given field
138
- def form_type_of(field_name)
139
- validate_presence_of form_metadata_of(field_name)[:type]
140
- end
141
-
142
82
  # @return [Hash] custom filters
143
83
  def filters
144
84
  @filters ||= ::ActiveSupport::HashWithIndifferentAccess.new
@@ -2,15 +2,17 @@ module Wallaby
2
2
  class Map
3
3
  # To map model class to a klass
4
4
  class ModelClassMapper
5
+ DEFAULT_BLOCK = ->(same) { same }.freeze
6
+
5
7
  def initialize(base_class)
6
8
  @base_class = base_class
7
9
  end
8
10
 
9
- def map
10
- (@base_class.try(:subclasses) || EMPTY_HASH)
11
- .each_with_object({}) do |klass, map|
11
+ def map(&block)
12
+ block ||= DEFAULT_BLOCK
13
+ classes_array.each_with_object({}) do |klass, map|
12
14
  next if anonymous? klass
13
- map[klass.model_class] = block_given? ? yield(klass) : klass
15
+ map[klass.model_class] = block.call klass
14
16
  end
15
17
  end
16
18
 
@@ -19,6 +21,10 @@ module Wallaby
19
21
  def anonymous?(klass)
20
22
  klass.name.blank?
21
23
  end
24
+
25
+ def classes_array
26
+ @base_class.try(:descendants) || EMPTY_ARRAY
27
+ end
22
28
  end
23
29
  end
24
30
  end
@@ -3,7 +3,7 @@ module Wallaby
3
3
  class Map
4
4
  # { model => mode }
5
5
  def self.mode_map
6
- @mode_map ||= ModeMapper.new(Mode.subclasses).map.freeze
6
+ @mode_map ||= ModeMapper.new(Mode.descendants).map.freeze
7
7
  end
8
8
 
9
9
  # [ model classes ]
@@ -22,7 +22,7 @@ module Wallaby
22
22
  def build(field_name)
23
23
  metadata = @model_decorator.index_metadata_of field_name
24
24
  label = Utils.to_field_label field_name, metadata
25
- return label unless sortable? metadata
25
+ return label unless sortable? field_name, metadata
26
26
  sort_field_name = metadata[:sort_field_name] || field_name
27
27
  url_params = next_builder.next_params sort_field_name
28
28
  @helper.index_link(model_class, url_params: url_params) { label }
@@ -36,8 +36,8 @@ module Wallaby
36
36
  end
37
37
 
38
38
  # If it's non-association field or custom sorting field
39
- def sortable?(metadata)
40
- metadata[:is_origin] && !metadata[:is_association] \
39
+ def sortable?(field_name, metadata)
40
+ @model_decorator.fields[field_name] && !metadata[:is_association] \
41
41
  || metadata[:sort_field_name]
42
42
  end
43
43
  end
@@ -2,10 +2,11 @@ module Wallaby
2
2
  class Configuration
3
3
  # Security configuration
4
4
  class Security
5
+ attr_accessor :logout_path, :logout_method, :email_method
5
6
  # by default, current_user returns nil
6
- DEFAULT_CURRENT_USER = -> { nil }
7
+ DEFAULT_CURRENT_USER = -> { nil }
7
8
  # by default, not to stop the before_action chain
8
- DEFAULT_AUTHENTICATE = -> { true }
9
+ DEFAULT_AUTHENTICATE = -> { true }
9
10
 
10
11
  # Configure how to get the current user. All application controller
11
12
  # methods will be available.
@@ -66,6 +66,7 @@ require 'tree/wallaby/node'
66
66
 
67
67
  require 'interfaces/wallaby/mode'
68
68
  require 'interfaces/wallaby/model_decorator'
69
+ require 'interfaces/wallaby/model_decorator/field_helpers'
69
70
  require 'interfaces/wallaby/model_finder'
70
71
  require 'interfaces/wallaby/model_service_provider'
71
72
  require 'interfaces/wallaby/model_pagination_provider'
@@ -77,6 +78,7 @@ require 'errors/wallaby/model_not_found'
77
78
  require 'errors/wallaby/not_authenticated'
78
79
  require 'errors/wallaby/not_implemented'
79
80
  require 'errors/wallaby/resource_not_found'
81
+ require 'errors/wallaby/unprocessable_entity'
80
82
 
81
83
  require 'parsers/wallaby/parser'
82
84
 
@@ -1,3 +1,3 @@
1
1
  module Wallaby
2
- VERSION = '5.1.3'.freeze
2
+ VERSION = '5.1.4'.freeze
3
3
  end
data/lib/wallaby.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  module Wallaby
2
2
  EMPTY_STRING = ''.freeze
3
3
  EMPTY_HASH = {}.freeze
4
+ EMPTY_ARRAY = [].freeze
4
5
  SPACE = ' '.freeze
5
6
  SLASH = '/'.freeze
6
7
  COLONS = '::'.freeze
@@ -19,6 +20,7 @@ module Wallaby
19
20
  ).freeze
20
21
  WILDCARD = 'QUERY'.freeze
21
22
  FORM_ACTIONS = %w(new create edit update).freeze
23
+ SAVE_ACTIONS = %w(create update).freeze
22
24
  end
23
25
 
24
26
  require 'wallaby/engine'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wallaby
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.3
4
+ version: 5.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tianwen Chen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-13 00:00:00.000000000 Z
11
+ date: 2018-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootstrap-sass
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - ">="
172
172
  - !ruby/object:Gem::Version
173
- version: '5.0'
173
+ version: 4.2.0
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - ">="
179
179
  - !ruby/object:Gem::Version
180
- version: '5.0'
180
+ version: 4.2.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: responders
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -519,6 +519,7 @@ files:
519
519
  - lib/errors/wallaby/not_found.rb
520
520
  - lib/errors/wallaby/not_implemented.rb
521
521
  - lib/errors/wallaby/resource_not_found.rb
522
+ - lib/errors/wallaby/unprocessable_entity.rb
522
523
  - lib/forms/wallaby/form_builder.rb
523
524
  - lib/helpers/wallaby/application_helper.rb
524
525
  - lib/helpers/wallaby/base_helper.rb
@@ -530,6 +531,7 @@ files:
530
531
  - lib/helpers/wallaby/styling_helper.rb
531
532
  - lib/interfaces/wallaby/mode.rb
532
533
  - lib/interfaces/wallaby/model_decorator.rb
534
+ - lib/interfaces/wallaby/model_decorator/field_helpers.rb
533
535
  - lib/interfaces/wallaby/model_finder.rb
534
536
  - lib/interfaces/wallaby/model_pagination_provider.rb
535
537
  - lib/interfaces/wallaby/model_service_provider.rb
@@ -584,9 +586,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
584
586
  version: '0'
585
587
  requirements: []
586
588
  rubyforge_project:
587
- rubygems_version: 2.6.14
589
+ rubygems_version: 2.5.2
588
590
  signing_key:
589
591
  specification_version: 4
590
592
  summary: Rails way database admin interface
591
593
  test_files: []
592
- has_rdoc: