rails-fields 0.2.0 → 0.3.0

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
  SHA256:
3
- metadata.gz: b999d7f43e0cae7f26122e81c3a7c7106ee1226fedee0621cc4ef548ac76883e
4
- data.tar.gz: c1d624fc00ae4e3c595ae06d857758c55088342d8dba908ac73a11c514cf8e47
3
+ metadata.gz: 602330976f090420f2e4dc7ac7ce1fd5c897cf62c99f17a86bd3dbee88809b50
4
+ data.tar.gz: e2310c47d667f4d9199e7e0db893329d0eb75aaf257fe9579f31151b7e510be8
5
5
  SHA512:
6
- metadata.gz: a8e0d1712858632023a259026a9b43634714f898a6a79eacb5602931711b0d4edc488375ae5ed222e6b9c8fb4348f7bbb8eb4645645385d33ee0a28a9758fe76
7
- data.tar.gz: 8ddf8b005b637e7004ab598579bc66b76d53a126305598a3c8563e33c5025211ce882e69b19f0b909ff9cbacf6f6c9768fff9cd5d5f999328e375bdc4a20b034
6
+ metadata.gz: 4f186efcfac13495e229a308d088ea15698339cdec3be93d411504946514b4d618600947dc8182ee24048eb85c617878dee7115f2b7d88742a52334a8190c095
7
+ data.tar.gz: 893c54f91c6fe94601dd0ab278b5eb00e97946e4df03147f7ebfa8837c12be090f6ab4c18a735395e983b2d430617bfa05f7862521148afb52531299b087485e
data/README.md CHANGED
@@ -8,9 +8,9 @@
8
8
 
9
9
  Enforce field types and attributes for ActiveRecord models in Ruby on Rails applications.
10
10
 
11
- - 🚀 Automagic ActiveRecord Migrations generations
12
- - 🦄 Automatic [GraphqQL types](https://graphql-ruby.org/type_definitions/objects.html) generation
13
- - 📝 Explicit declarative model attributes annotation
11
+ - 🚀 Auto-magic ActiveRecord **Migrations** generation
12
+ - 🦄 Automatic [GraphQL types](https://graphql-ruby.org/type_definitions/objects.html) generation
13
+ - 📝 Explicit **declarative** model attributes annotation
14
14
  - 💪🏻 Enforcement of fields declaration with real db columns
15
15
  - 📜 Automatic YARD model documentation
16
16
 
@@ -76,18 +76,6 @@ And then execute:
76
76
  ```bash
77
77
  $ bundle install
78
78
  ```
79
- Update your `ApplicationRecord`:
80
-
81
- ```patch
82
- +require 'rails_fields'
83
-
84
- class ApplicationRecord < ActiveRecord::Base
85
- primary_abstract_class
86
-
87
- + extend RailsFields::ClassMethods
88
- + include RailsFields
89
- end
90
- ```
91
79
 
92
80
  ## License
93
81
 
@@ -1,3 +1,4 @@
1
+ require "rails_fields/railtie"
1
2
  require "rails_fields/errors/rails_fields_error"
2
3
  require "rails_fields/errors/rails_fields_mismatch_error"
3
4
  require "rails_fields/errors/rails_fields_unknown_type_error"
@@ -6,9 +7,13 @@ require "rails_fields/utils/mappings"
6
7
  require "rails_fields/utils/helpers"
7
8
  require "rails_fields/class_methods"
8
9
  require "rails_fields/instance_methods"
10
+ require "rails_fields/enforce_fields_middleware"
11
+
12
+ Rails.logger.debug "RailsFields file root"
9
13
 
10
14
  # Provides enforcement of declared field for ActiveRecord models.
11
15
  module RailsFields
16
+ Rails.logger.debug "RailsFields module"
12
17
  @processed_classes = {}
13
18
 
14
19
  def self.processed_classes
@@ -16,11 +21,11 @@ module RailsFields
16
21
  end
17
22
 
18
23
  # @param base [ActiveRecord::Base] the model to include the module in
19
- def self.included(base)
20
- # base.extend(ClassMethods)
21
- # todo: raise if class methods not found
22
- base.after_initialize do
23
- self.class.enforce_declared_fields
24
- end
25
- end
24
+ # def self.included(base)
25
+ # # base.extend(ClassMethods)
26
+ # # todo: raise if class methods not found
27
+ # # base.after_initialize do
28
+ # # self.class.enforce_declared_fields
29
+ # # end
30
+ # end
26
31
  end
@@ -0,0 +1,18 @@
1
+ Rails.logger.debug "RailsFields::EnforceFieldsMiddleware"
2
+
3
+ module RailsFields
4
+ class EnforceFieldsMiddleware
5
+ def initialize(app)
6
+ @app = app
7
+ Rails.logger.debug "RailsFields::EnforceFieldsMiddleware initialize"
8
+ end
9
+
10
+ def call(env)
11
+ Rails.logger.debug "RailsFields::EnforceFieldsMiddleware call"
12
+ ApplicationRecord.descendants.each do |model|
13
+ model.enforce_declared_fields # if model.respond_to?(:enforce_declared_fields)
14
+ end
15
+ @app.call(env)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ require "active_support"
2
+ require "active_support/rails"
3
+ require "rails_fields/enforce_fields_middleware"
4
+
5
+ Rails.logger.debug "RailsFields::Railtie"
6
+
7
+ module RailsFields
8
+ class Railtie < Rails::Railtie
9
+ # config.eager_load_namespaces << RailsFields
10
+
11
+ initializer "rails_fields.initialize" do
12
+ ActiveSupport.on_load(:active_record) do
13
+ extend RailsFields::ClassMethods
14
+ include RailsFields
15
+ end
16
+ end
17
+
18
+ initializer "rails_fields.middleware" do |app|
19
+ app.middleware.insert_before ActiveRecord::Migration::CheckPending, RailsFields::EnforceFieldsMiddleware
20
+ end
21
+ end
22
+ end
@@ -1,3 +1,3 @@
1
1
  module RailsFields
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,20 +1,89 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-fields
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gaston Morixe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-27 00:00:00.000000000 Z
12
- dependencies: []
13
- description: The rails-fields gem provides robust field type enforcement for ActiveRecord
14
- models in Ruby on Rails applications. It includes utility methods for type validation,
15
- logging, and field mappings between GraphQL and ActiveRecord types. Custom error
16
- classes provide clear diagnostics for field-related issues, making it easier to
17
- maintain consistent data models.
11
+ date: 2023-08-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: graphql
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: yard
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: jekyll
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: webrick
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: |2
84
+ rails-fields gem provides robust field type enforcement for ActiveRecord models in Ruby on Rails applications.
85
+ It includes utility methods for type validation, logging, and field mappings between GraphQL and ActiveRecord types
86
+ Custom error classes provide clear diagnostics for field-related issues, making it easier to maintain consistent data models.
18
87
  email:
19
88
  - gaston@gastonmorixe.com
20
89
  executables: []
@@ -22,12 +91,14 @@ extensions: []
22
91
  extra_rdoc_files: []
23
92
  files:
24
93
  - README.md
25
- - lib/rails_fields.rb
94
+ - lib/rails-fields.rb
26
95
  - lib/rails_fields/class_methods.rb
96
+ - lib/rails_fields/enforce_fields_middleware.rb
27
97
  - lib/rails_fields/errors/rails_fields_error.rb
28
98
  - lib/rails_fields/errors/rails_fields_mismatch_error.rb
29
99
  - lib/rails_fields/errors/rails_fields_unknown_type_error.rb
30
100
  - lib/rails_fields/instance_methods.rb
101
+ - lib/rails_fields/railtie.rb
31
102
  - lib/rails_fields/utils/helpers.rb
32
103
  - lib/rails_fields/utils/logging.rb
33
104
  - lib/rails_fields/utils/mappings.rb
@@ -35,7 +106,10 @@ files:
35
106
  homepage: https://github.com/gastonmorixe/rails-fields
36
107
  licenses:
37
108
  - MIT
38
- metadata: {}
109
+ metadata:
110
+ homepage_uri: https://rails-fields.dev
111
+ source_code_uri: https://github.com/gastonmorixe/rails-fields
112
+ bug_tracker_uri: https://github.com/gastonmorixe/rails-fields/issues
39
113
  post_install_message:
40
114
  rdoc_options: []
41
115
  require_paths: