inertia_rails 2.0.1 → 3.1.0
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/CHANGELOG.md +18 -0
 - data/README.md +137 -5
 - data/inertia_rails.gemspec +2 -1
 - data/lib/generators/inertia_rails/install/react/inertia.jsx +1 -5
 - data/lib/generators/inertia_rails/install/svelte/inertia.js +1 -6
 - data/lib/generators/inertia_rails/install/vue/inertia.js +0 -4
 - data/lib/inertia_rails/controller.rb +32 -0
 - data/lib/inertia_rails/inertia_rails.rb +14 -2
 - data/lib/inertia_rails/middleware.rb +5 -0
 - data/lib/inertia_rails/renderer.rb +18 -9
 - data/lib/inertia_rails/rspec.rb +2 -2
 - data/lib/inertia_rails/version.rb +1 -1
 - data/lib/inertia_rails.rb +1 -0
 - metadata +18 -4
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 27e7436cecef40102f1e1ca1971c75b182195e3291f55f94981ef8c87359d9d4
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 50c9634e36e040732e9bf42e7770a3d759e4930513b4fb54d2761e905689bc24
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2653faf355cc672ebe5faec59fffdfe928cddd8b045ba114d5e8fafe01e3c5eb74ed47ac63336e62e1080c5e616a1ce3ac68fa8475644a1caf9f70e0206ce327
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: f7ae1c4be29f75140a42a08cd31c8ca946b1b5bb39a681c8bd2b0c8db71c716bcf3368bc0f37b573ffe84906686d57b191ead1e1143de3d19bf4441bab06c09f
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -4,6 +4,24 @@ All notable changes to this project will be documented in this file. 
     | 
|
| 
       4 
4 
     | 
    
         
             
            The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
         
     | 
| 
       5 
5 
     | 
    
         
             
            and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
      
 7 
     | 
    
         
            +
            ## [3.1.0] - 2023-08-21
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            ### Features
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            * CSRF protection works without additional configuration now.
         
     | 
| 
      
 12 
     | 
    
         
            +
            * Optional deep merging of shared props.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            ### Fixes
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            * Document Inertia headers. @buhrmi
         
     | 
| 
      
 17 
     | 
    
         
            +
            * Documentation typo fix. @lujanfernaud
         
     | 
| 
      
 18 
     | 
    
         
            +
            * Changelog URI fix. @PedroAugustoRamalhoDuarte
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            ## [3.0.0] - 2022-09-22
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            * Allow rails layout to set inertia layout. Thanks @ElMassimo!
         
     | 
| 
      
 23 
     | 
    
         
            +
            * Add the ability to set inertia props and components via rails conventions (see readme)
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
       7 
25 
     | 
    
         
             
            ## [2.0.1] - 2022-07-12
         
     | 
| 
       8 
26 
     | 
    
         | 
| 
       9 
27 
     | 
    
         
             
            * Fix for a middleware issue where global state could be polluted if an exception occurs in a request. Thanks @ElMassimo!
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -14,7 +14,7 @@ gem 'inertia_rails' 
     | 
|
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
            ### Frontend
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
            Rails 7 specific frontend docs coming soon. For now, check out the official Inertia docs at https://inertiajs.com/
         
     | 
| 
      
 17 
     | 
    
         
            +
            Rails 7 specific frontend docs coming soon. For now, check out the official Inertia docs at https://inertiajs.com/ or see an example using React/Vite [here](https://github.com/BrandonShar/inertia-rails-template)
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
            ## Usage
         
     | 
| 
       20 
20 
     | 
    
         | 
| 
         @@ -30,9 +30,56 @@ def index 
     | 
|
| 
       30 
30 
     | 
    
         
             
            end
         
     | 
| 
       31 
31 
     | 
    
         
             
            ```
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
            #### Rails Component and Instance Props 
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            Starting in version 3.0, Inertia Rails allows you to provide your component name and props via common rails conventions. 
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 38 
     | 
    
         
            +
            class EventsController < ApplicationController
         
     | 
| 
      
 39 
     | 
    
         
            +
              use_inertia_instance_props
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def index
         
     | 
| 
      
 42 
     | 
    
         
            +
                @events = Event.all
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
      
 46 
     | 
    
         
            +
            ```
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            is the same as 
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 52 
     | 
    
         
            +
            class EventsController < ApplicationController
         
     | 
| 
      
 53 
     | 
    
         
            +
              def index
         
     | 
| 
      
 54 
     | 
    
         
            +
                render inertia: 'events/index', props: {
         
     | 
| 
      
 55 
     | 
    
         
            +
                  events: Event.all
         
     | 
| 
      
 56 
     | 
    
         
            +
                }
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
| 
      
 59 
     | 
    
         
            +
            ```
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            #### Instance Props and Default Render Notes 
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            In order to use instance props, you must call `use_inertia_instance_props` on the controller (or a base controller it inherits from). If any props are provided manually, instance props
         
     | 
| 
      
 64 
     | 
    
         
            +
            are automatically disabled for that response. Instance props are only included if they are defined after the before filter is set from `use_inertia_instance_props`.
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            Automatic component name is also opt in, you must set the `default_render` config value to `true`. Otherwise, you can simply `render inertia: true` for the same behavior explicitly. 
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
            ### Layout 
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
            Inertia layouts use the rails layout convention and can be set or changed in the same way. The original `layout` config option is still functional, but will likely be deprecated in the future in favor
         
     | 
| 
      
 71 
     | 
    
         
            +
            of using rails layouts.
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 74 
     | 
    
         
            +
            class EventsController < ApplicationController
         
     | 
| 
      
 75 
     | 
    
         
            +
              layout 'inertia_application'
         
     | 
| 
      
 76 
     | 
    
         
            +
            end
         
     | 
| 
      
 77 
     | 
    
         
            +
            ```
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       33 
80 
     | 
    
         
             
            ### Shared Data
         
     | 
| 
       34 
81 
     | 
    
         | 
| 
       35 
     | 
    
         
            -
            If you have data that you want to be provided as a prop to every component (a common use-case is  
     | 
| 
      
 82 
     | 
    
         
            +
            If you have data that you want to be provided as a prop to every component (a common use-case is information about the authenticated user) you can use the `shared_data` controller method.
         
     | 
| 
       36 
83 
     | 
    
         | 
| 
       37 
84 
     | 
    
         
             
            ```ruby
         
     | 
| 
       38 
85 
     | 
    
         
             
            class EventsController < ApplicationController
         
     | 
| 
         @@ -54,6 +101,84 @@ class EventsController < ApplicationController 
     | 
|
| 
       54 
101 
     | 
    
         
             
            end
         
     | 
| 
       55 
102 
     | 
    
         
             
            ```
         
     | 
| 
       56 
103 
     | 
    
         | 
| 
      
 104 
     | 
    
         
            +
            #### Deep Merging Shared Data
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
            By default, Inertia will shallow merge data defined in an action with the shared data. You might want a deep merge. Imagine using shared data to represent defaults you'll override sometimes.
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 109 
     | 
    
         
            +
            class ApplicationController
         
     | 
| 
      
 110 
     | 
    
         
            +
              inertia_share do
         
     | 
| 
      
 111 
     | 
    
         
            +
                { basketball_data: { points: 50, rebounds: 100 } }
         
     | 
| 
      
 112 
     | 
    
         
            +
              end
         
     | 
| 
      
 113 
     | 
    
         
            +
            end
         
     | 
| 
      
 114 
     | 
    
         
            +
            ```
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
            Let's say we want a particular action to change only part of that data structure. The renderer accepts a `deep_merge` option:
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 119 
     | 
    
         
            +
            class CrazyScorersController < ApplicationController
         
     | 
| 
      
 120 
     | 
    
         
            +
              def index
         
     | 
| 
      
 121 
     | 
    
         
            +
                render inertia: 'CrazyScorersComponent',
         
     | 
| 
      
 122 
     | 
    
         
            +
                props: { basketball_data: { points: 100 } },
         
     | 
| 
      
 123 
     | 
    
         
            +
                deep_merge: true
         
     | 
| 
      
 124 
     | 
    
         
            +
              end
         
     | 
| 
      
 125 
     | 
    
         
            +
            end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
            # The renderer will send this to the frontend:
         
     | 
| 
      
 128 
     | 
    
         
            +
            {
         
     | 
| 
      
 129 
     | 
    
         
            +
              basketball_data: {
         
     | 
| 
      
 130 
     | 
    
         
            +
                points: 100,
         
     | 
| 
      
 131 
     | 
    
         
            +
                rebounds: 100,
         
     | 
| 
      
 132 
     | 
    
         
            +
              }
         
     | 
| 
      
 133 
     | 
    
         
            +
            }
         
     | 
| 
      
 134 
     | 
    
         
            +
            ```
         
     | 
| 
      
 135 
     | 
    
         
            +
             
     | 
| 
      
 136 
     | 
    
         
            +
            Deep merging can be set as the project wide default via the InertiaRails configuration:
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 139 
     | 
    
         
            +
            # config/initializers/some_initializer.rb
         
     | 
| 
      
 140 
     | 
    
         
            +
            InertiaRails.configure do |config|
         
     | 
| 
      
 141 
     | 
    
         
            +
              config.deep_merge_shared_data = true
         
     | 
| 
      
 142 
     | 
    
         
            +
            end
         
     | 
| 
      
 143 
     | 
    
         
            +
             
     | 
| 
      
 144 
     | 
    
         
            +
            ```
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
            If deep merging is enabled by default, it's possible to opt out within the action:
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 149 
     | 
    
         
            +
            class CrazyScorersController < ApplicationController
         
     | 
| 
      
 150 
     | 
    
         
            +
              inertia_share do
         
     | 
| 
      
 151 
     | 
    
         
            +
                {
         
     | 
| 
      
 152 
     | 
    
         
            +
                  basketball_data: {
         
     | 
| 
      
 153 
     | 
    
         
            +
                    points: 50,
         
     | 
| 
      
 154 
     | 
    
         
            +
                    rebounds: 10,
         
     | 
| 
      
 155 
     | 
    
         
            +
                  }
         
     | 
| 
      
 156 
     | 
    
         
            +
                }
         
     | 
| 
      
 157 
     | 
    
         
            +
              end
         
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
              def index
         
     | 
| 
      
 160 
     | 
    
         
            +
                render inertia: 'CrazyScorersComponent',
         
     | 
| 
      
 161 
     | 
    
         
            +
                props: { basketball_data: { points: 100 } },
         
     | 
| 
      
 162 
     | 
    
         
            +
                deep_merge: false
         
     | 
| 
      
 163 
     | 
    
         
            +
              end
         
     | 
| 
      
 164 
     | 
    
         
            +
            end
         
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
            # Even if deep merging is set by default, since the renderer has `deep_merge: false`, it will send a shallow merge to the frontend:
         
     | 
| 
      
 167 
     | 
    
         
            +
            {
         
     | 
| 
      
 168 
     | 
    
         
            +
              basketball_data: {
         
     | 
| 
      
 169 
     | 
    
         
            +
                points: 100,
         
     | 
| 
      
 170 
     | 
    
         
            +
              }
         
     | 
| 
      
 171 
     | 
    
         
            +
            }
         
     | 
| 
      
 172 
     | 
    
         
            +
            ```
         
     | 
| 
      
 173 
     | 
    
         
            +
             
     | 
| 
      
 174 
     | 
    
         
            +
            ### Lazy Props
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
            On the front end, Inertia supports the concept of "partial reloads" where only the props requested are returned by the server. Sometimes, you may want to use this flow to avoid processing a particularly slow prop on the intial load. In this case, you can use Lazy props. Lazy props aren't evaluated unless they're specifically requested by name in a partial reload.
         
     | 
| 
      
 177 
     | 
    
         
            +
             
     | 
| 
      
 178 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 179 
     | 
    
         
            +
              inertia_share some_data: InertiaRails.lazy(lambda { some_very_slow_method })
         
     | 
| 
      
 180 
     | 
    
         
            +
            ```
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
       57 
182 
     | 
    
         
             
            ### Routing
         
     | 
| 
       58 
183 
     | 
    
         | 
| 
       59 
184 
     | 
    
         
             
            If you don't need a controller to handle a static component, you can route directly to a component with the inertia route helper
         
     | 
| 
         @@ -62,6 +187,12 @@ If you don't need a controller to handle a static component, you can route direc 
     | 
|
| 
       62 
187 
     | 
    
         
             
            inertia 'about' => 'AboutComponent'
         
     | 
| 
       63 
188 
     | 
    
         
             
            ```
         
     | 
| 
       64 
189 
     | 
    
         | 
| 
      
 190 
     | 
    
         
            +
            ### SSR
         
     | 
| 
      
 191 
     | 
    
         
            +
             
     | 
| 
      
 192 
     | 
    
         
            +
            Enable SSR via the config settings for `ssr_enabled` and `ssr_url`.
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
            When using SSR, don't forget to add `<%= inertia_headers %>` to the `<head>` of your `application.html.erb`.
         
     | 
| 
      
 195 
     | 
    
         
            +
             
     | 
| 
       65 
196 
     | 
    
         
             
            ## Configuration
         
     | 
| 
       66 
197 
     | 
    
         | 
| 
       67 
198 
     | 
    
         
             
            Inertia Rails has a few different configuration options that can be set anywhere, but the most common location is from within an initializer.
         
     | 
| 
         @@ -72,13 +203,14 @@ InertiaRails.configure do |config| 
     | 
|
| 
       72 
203 
     | 
    
         | 
| 
       73 
204 
     | 
    
         
             
              # set the current version for automatic asset refreshing. A string value should be used if any.
         
     | 
| 
       74 
205 
     | 
    
         
             
              config.version = nil
         
     | 
| 
      
 206 
     | 
    
         
            +
              # enable default inertia rendering (warning! this will override rails default rendering behavior)
         
     | 
| 
      
 207 
     | 
    
         
            +
              config.default_render = true
         
     | 
| 
       75 
208 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
              # set the layout you want inertia components to be rendered within. This layout must include any required inertia javascript.
         
     | 
| 
       77 
     | 
    
         
            -
              config.layout = 'application'
         
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
209 
     | 
    
         
             
              # ssr specific options
         
     | 
| 
       80 
210 
     | 
    
         
             
              config.ssr_enabled = false
         
     | 
| 
       81 
211 
     | 
    
         
             
              config.ssr_url = 'http://localhost:13714'
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
              config.deep_merge_shared_data = false
         
     | 
| 
       82 
214 
     | 
    
         | 
| 
       83 
215 
     | 
    
         
             
            end
         
     | 
| 
       84 
216 
     | 
    
         
             
            ```
         
     | 
    
        data/inertia_rails.gemspec
    CHANGED
    
    | 
         @@ -14,7 +14,7 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
              spec.metadata["homepage_uri"] = spec.homepage
         
     | 
| 
       16 
16 
     | 
    
         
             
              spec.metadata["source_code_uri"] = spec.homepage
         
     | 
| 
       17 
     | 
    
         
            -
              spec.metadata["changelog_uri"] = "#{spec.homepage}/CHANGELOG.md"
         
     | 
| 
      
 17 
     | 
    
         
            +
              spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/master/CHANGELOG.md"
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
              # Specify which files should be added to the gem when it is released.
         
     | 
| 
       20 
20 
     | 
    
         
             
              # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
         
     | 
| 
         @@ -34,4 +34,5 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       34 
34 
     | 
    
         
             
              spec.add_development_dependency "sqlite3"
         
     | 
| 
       35 
35 
     | 
    
         
             
              spec.add_development_dependency "appraisal"
         
     | 
| 
       36 
36 
     | 
    
         
             
              spec.add_development_dependency "responders"
         
     | 
| 
      
 37 
     | 
    
         
            +
              spec.add_development_dependency "debug"
         
     | 
| 
       37 
38 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,16 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            import { App } from '@inertiajs/inertia-react';
         
     | 
| 
       2 
2 
     | 
    
         
             
            import React from 'react';
         
     | 
| 
       3 
3 
     | 
    
         
             
            import { render } from 'react-dom';
         
     | 
| 
       4 
     | 
    
         
            -
            import axios from 'axios';
         
     | 
| 
       5 
4 
     | 
    
         
             
            import { InertiaProgress } from '@inertiajs/progress';
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
            document.addEventListener('DOMContentLoaded', () => {
         
     | 
| 
       8 
7 
     | 
    
         
             
              InertiaProgress.init();
         
     | 
| 
       9 
8 
     | 
    
         
             
              const el = document.getElementById('app')
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
              const csrfToken = document.querySelector('meta[name=csrf-token]').content;
         
     | 
| 
       12 
     | 
    
         
            -
              axios.defaults.headers.common['X-CSRF-Token'] = csrfToken;
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
10 
     | 
    
         
             
              render(
         
     | 
| 
       15 
11 
     | 
    
         
             
                <App
         
     | 
| 
       16 
12 
     | 
    
         
             
                  initialPage={JSON.parse(el.dataset.page)}
         
     | 
| 
         @@ -18,4 +14,4 @@ document.addEventListener('DOMContentLoaded', () => { 
     | 
|
| 
       18 
14 
     | 
    
         
             
                />,
         
     | 
| 
       19 
15 
     | 
    
         
             
                el
         
     | 
| 
       20 
16 
     | 
    
         
             
              )
         
     | 
| 
       21 
     | 
    
         
            -
            });
         
     | 
| 
      
 17 
     | 
    
         
            +
            });
         
     | 
| 
         @@ -1,12 +1,7 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import axios from 'axios'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
1 
     | 
    
         
             
            import { createInertiaApp } from '@inertiajs/inertia-svelte'
         
     | 
| 
       4 
2 
     | 
    
         
             
            import { InertiaProgress } from '@inertiajs/progress'
         
     | 
| 
       5 
3 
     | 
    
         | 
| 
       6 
4 
     | 
    
         
             
            document.addEventListener('DOMContentLoaded', () => {
         
     | 
| 
       7 
     | 
    
         
            -
              const csrfToken = document.querySelector('meta[name=csrf-token]').content
         
     | 
| 
       8 
     | 
    
         
            -
              axios.defaults.headers.common['X-CSRF-Token'] = csrfToken
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
5 
     | 
    
         
             
              InertiaProgress.init()
         
     | 
| 
       11 
6 
     | 
    
         | 
| 
       12 
7 
     | 
    
         
             
              createInertiaApp({
         
     | 
| 
         @@ -16,4 +11,4 @@ document.addEventListener('DOMContentLoaded', () => { 
     | 
|
| 
       16 
11 
     | 
    
         
             
                  new App({ target: el, props })
         
     | 
| 
       17 
12 
     | 
    
         
             
                },
         
     | 
| 
       18 
13 
     | 
    
         
             
              })
         
     | 
| 
       19 
     | 
    
         
            -
            })
         
     | 
| 
      
 14 
     | 
    
         
            +
            })
         
     | 
| 
         @@ -1,13 +1,9 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            import axios from 'axios'
         
     | 
| 
       2 
1 
     | 
    
         
             
            import Vue from 'vue'
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
3 
     | 
    
         
             
            import { app, plugin } from '@inertiajs/inertia-vue'
         
     | 
| 
       5 
4 
     | 
    
         
             
            import { InertiaProgress } from '@inertiajs/progress'
         
     | 
| 
       6 
5 
     | 
    
         | 
| 
       7 
6 
     | 
    
         
             
            document.addEventListener('DOMContentLoaded', () => {
         
     | 
| 
       8 
     | 
    
         
            -
              const csrfToken = document.querySelector('meta[name=csrf-token]').content
         
     | 
| 
       9 
     | 
    
         
            -
              axios.defaults.headers.common['X-CSRF-Token'] = csrfToken
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
7 
     | 
    
         
             
              InertiaProgress.init();
         
     | 
| 
       12 
8 
     | 
    
         
             
              const el = document.getElementById('app')
         
     | 
| 
       13 
9 
     | 
    
         | 
| 
         @@ -11,6 +11,10 @@ module InertiaRails 
     | 
|
| 
       11 
11 
     | 
    
         
             
                    InertiaRails.share(errors: session[:inertia_errors]) if session[:inertia_errors].present?
         
     | 
| 
       12 
12 
     | 
    
         
             
                  end
         
     | 
| 
       13 
13 
     | 
    
         
             
                  helper ::InertiaRails::Helper
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                  after_action do
         
     | 
| 
      
 16 
     | 
    
         
            +
                    cookies['XSRF-TOKEN'] = form_authenticity_token unless request.inertia? || !protect_against_forgery?
         
     | 
| 
      
 17 
     | 
    
         
            +
                  end
         
     | 
| 
       14 
18 
     | 
    
         
             
                end
         
     | 
| 
       15 
19 
     | 
    
         | 
| 
       16 
20 
     | 
    
         
             
                module ClassMethods
         
     | 
| 
         @@ -20,6 +24,21 @@ module InertiaRails 
     | 
|
| 
       20 
24 
     | 
    
         
             
                      InertiaRails.share_block(block) if block
         
     | 
| 
       21 
25 
     | 
    
         
             
                    end
         
     | 
| 
       22 
26 
     | 
    
         
             
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                  def use_inertia_instance_props
         
     | 
| 
      
 29 
     | 
    
         
            +
                    before_action do
         
     | 
| 
      
 30 
     | 
    
         
            +
                      @_inertia_instance_props = true
         
     | 
| 
      
 31 
     | 
    
         
            +
                      @_inertia_skip_props = view_assigns.keys + ['_inertia_skip_props']
         
     | 
| 
      
 32 
     | 
    
         
            +
                    end
         
     | 
| 
      
 33 
     | 
    
         
            +
                  end
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                def default_render
         
     | 
| 
      
 37 
     | 
    
         
            +
                  if InertiaRails.default_render?
         
     | 
| 
      
 38 
     | 
    
         
            +
                    render(inertia: true)
         
     | 
| 
      
 39 
     | 
    
         
            +
                  else
         
     | 
| 
      
 40 
     | 
    
         
            +
                    super
         
     | 
| 
      
 41 
     | 
    
         
            +
                  end
         
     | 
| 
       23 
42 
     | 
    
         
             
                end
         
     | 
| 
       24 
43 
     | 
    
         | 
| 
       25 
44 
     | 
    
         
             
                def redirect_to(options = {}, response_options = {})
         
     | 
| 
         @@ -36,8 +55,21 @@ module InertiaRails 
     | 
|
| 
       36 
55 
     | 
    
         
             
                  )
         
     | 
| 
       37 
56 
     | 
    
         
             
                end
         
     | 
| 
       38 
57 
     | 
    
         | 
| 
      
 58 
     | 
    
         
            +
                def inertia_view_assigns
         
     | 
| 
      
 59 
     | 
    
         
            +
                  return {} unless @_inertia_instance_props
         
     | 
| 
      
 60 
     | 
    
         
            +
                  view_assigns.except(*@_inertia_skip_props)
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
       39 
63 
     | 
    
         
             
                private
         
     | 
| 
       40 
64 
     | 
    
         | 
| 
      
 65 
     | 
    
         
            +
                def inertia_layout
         
     | 
| 
      
 66 
     | 
    
         
            +
                  layout = ::InertiaRails.layout
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                  # When the global configuration is not set, let Rails decide which layout
         
     | 
| 
      
 69 
     | 
    
         
            +
                  # should be used based on the controller configuration.
         
     | 
| 
      
 70 
     | 
    
         
            +
                  layout.nil? ? true : layout
         
     | 
| 
      
 71 
     | 
    
         
            +
                end
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
       41 
73 
     | 
    
         
             
                def inertia_location(url)
         
     | 
| 
       42 
74 
     | 
    
         
             
                  headers['X-Inertia-Location'] = url
         
     | 
| 
       43 
75 
     | 
    
         
             
                  head :conflict
         
     | 
| 
         @@ -13,7 +13,9 @@ module InertiaRails 
     | 
|
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              # "Getters"
         
     | 
| 
       15 
15 
     | 
    
         
             
              def self.shared_data(controller)
         
     | 
| 
       16 
     | 
    
         
            -
                shared_plain_data. 
     | 
| 
      
 16 
     | 
    
         
            +
                shared_plain_data.
         
     | 
| 
      
 17 
     | 
    
         
            +
                  merge!(evaluated_blocks(controller, shared_blocks)).
         
     | 
| 
      
 18 
     | 
    
         
            +
                  with_indifferent_access
         
     | 
| 
       17 
19 
     | 
    
         
             
              end
         
     | 
| 
       18 
20 
     | 
    
         | 
| 
       19 
21 
     | 
    
         
             
              def self.version
         
     | 
| 
         @@ -32,10 +34,18 @@ module InertiaRails 
     | 
|
| 
       32 
34 
     | 
    
         
             
                Configuration.ssr_url
         
     | 
| 
       33 
35 
     | 
    
         
             
              end
         
     | 
| 
       34 
36 
     | 
    
         | 
| 
      
 37 
     | 
    
         
            +
              def self.default_render?
         
     | 
| 
      
 38 
     | 
    
         
            +
                Configuration.default_render
         
     | 
| 
      
 39 
     | 
    
         
            +
              end 
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       35 
41 
     | 
    
         
             
              def self.html_headers
         
     | 
| 
       36 
42 
     | 
    
         
             
                self.threadsafe_html_headers || []
         
     | 
| 
       37 
43 
     | 
    
         
             
              end
         
     | 
| 
       38 
44 
     | 
    
         | 
| 
      
 45 
     | 
    
         
            +
              def self.deep_merge_shared_data?
         
     | 
| 
      
 46 
     | 
    
         
            +
                Configuration.deep_merge_shared_data
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
       39 
49 
     | 
    
         
             
              # "Setters"
         
     | 
| 
       40 
50 
     | 
    
         
             
              def self.share(**args)
         
     | 
| 
       41 
51 
     | 
    
         
             
                self.shared_plain_data = self.shared_plain_data.merge(args)
         
     | 
| 
         @@ -62,10 +72,12 @@ module InertiaRails 
     | 
|
| 
       62 
72 
     | 
    
         
             
              private
         
     | 
| 
       63 
73 
     | 
    
         | 
| 
       64 
74 
     | 
    
         
             
              module Configuration
         
     | 
| 
       65 
     | 
    
         
            -
                mattr_accessor(:layout) {  
     | 
| 
      
 75 
     | 
    
         
            +
                mattr_accessor(:layout) { nil }
         
     | 
| 
       66 
76 
     | 
    
         
             
                mattr_accessor(:version) { nil }
         
     | 
| 
       67 
77 
     | 
    
         
             
                mattr_accessor(:ssr_enabled) { false }
         
     | 
| 
       68 
78 
     | 
    
         
             
                mattr_accessor(:ssr_url) { 'http://localhost:13714' }
         
     | 
| 
      
 79 
     | 
    
         
            +
                mattr_accessor(:default_render) { false }
         
     | 
| 
      
 80 
     | 
    
         
            +
                mattr_accessor(:deep_merge_shared_data) { false }
         
     | 
| 
       69 
81 
     | 
    
         | 
| 
       70 
82 
     | 
    
         
             
                def self.evaluated_version
         
     | 
| 
       71 
83 
     | 
    
         
             
                  self.version.respond_to?(:call) ? self.version.call : self.version
         
     | 
| 
         @@ -18,6 +18,7 @@ module InertiaRails 
     | 
|
| 
       18 
18 
     | 
    
         
             
                  end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
                  def response
         
     | 
| 
      
 21 
     | 
    
         
            +
                    copy_xsrf_to_csrf!
         
     | 
| 
       21 
22 
     | 
    
         
             
                    status, headers, body = @app.call(@env)
         
     | 
| 
       22 
23 
     | 
    
         
             
                    request = ActionDispatch::Request.new(@env)
         
     | 
| 
       23 
24 
     | 
    
         | 
| 
         @@ -89,6 +90,10 @@ module InertiaRails 
     | 
|
| 
       89 
90 
     | 
    
         
             
                    request.flash.keep
         
     | 
| 
       90 
91 
     | 
    
         
             
                    Rack::Response.new('', 409, {'X-Inertia-Location' => request.original_url}).finish
         
     | 
| 
       91 
92 
     | 
    
         
             
                  end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
                  def copy_xsrf_to_csrf!
         
     | 
| 
      
 95 
     | 
    
         
            +
                    @env['HTTP_X_CSRF_TOKEN'] = @env['HTTP_X_XSRF_TOKEN'] if @env['HTTP_X_XSRF_TOKEN'] && inertia_request?
         
     | 
| 
      
 96 
     | 
    
         
            +
                  end
         
     | 
| 
       92 
97 
     | 
    
         
             
                end
         
     | 
| 
       93 
98 
     | 
    
         
             
              end
         
     | 
| 
       94 
99 
     | 
    
         
             
            end
         
     | 
| 
         @@ -6,14 +6,15 @@ module InertiaRails 
     | 
|
| 
       6 
6 
     | 
    
         
             
              class Renderer
         
     | 
| 
       7 
7 
     | 
    
         
             
                attr_reader :component, :view_data
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
     | 
    
         
            -
                def initialize(component, controller, request, response, render_method, props 
     | 
| 
       10 
     | 
    
         
            -
                  @component = component
         
     | 
| 
      
 9 
     | 
    
         
            +
                def initialize(component, controller, request, response, render_method, props: nil, view_data: nil, deep_merge: nil)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @component = component.is_a?(TrueClass) ? "#{controller.controller_path}/#{controller.action_name}" : component
         
     | 
| 
       11 
11 
     | 
    
         
             
                  @controller = controller
         
     | 
| 
       12 
12 
     | 
    
         
             
                  @request = request
         
     | 
| 
       13 
13 
     | 
    
         
             
                  @response = response
         
     | 
| 
       14 
14 
     | 
    
         
             
                  @render_method = render_method
         
     | 
| 
       15 
     | 
    
         
            -
                  @props = props  
     | 
| 
      
 15 
     | 
    
         
            +
                  @props = props ? props.with_indifferent_access : controller.inertia_view_assigns.with_indifferent_access
         
     | 
| 
       16 
16 
     | 
    
         
             
                  @view_data = view_data || {}
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @deep_merge = !deep_merge.nil? ? deep_merge : InertiaRails.deep_merge_shared_data?
         
     | 
| 
       17 
18 
     | 
    
         
             
                end
         
     | 
| 
       18 
19 
     | 
    
         | 
| 
       19 
20 
     | 
    
         
             
                def render
         
     | 
| 
         @@ -23,7 +24,7 @@ module InertiaRails 
     | 
|
| 
       23 
24 
     | 
    
         
             
                    @render_method.call json: page, status: @response.status, content_type: Mime[:json]
         
     | 
| 
       24 
25 
     | 
    
         
             
                  else
         
     | 
| 
       25 
26 
     | 
    
         
             
                    return render_ssr if ::InertiaRails.ssr_enabled? rescue nil
         
     | 
| 
       26 
     | 
    
         
            -
                    @render_method.call template: 'inertia', layout:  
     | 
| 
      
 27 
     | 
    
         
            +
                    @render_method.call template: 'inertia', layout: layout, locals: (view_data).merge({page: page})
         
     | 
| 
       27 
28 
     | 
    
         
             
                  end
         
     | 
| 
       28 
29 
     | 
    
         
             
                end
         
     | 
| 
       29 
30 
     | 
    
         | 
| 
         @@ -34,11 +35,15 @@ module InertiaRails 
     | 
|
| 
       34 
35 
     | 
    
         
             
                  res = JSON.parse(Net::HTTP.post(uri, page.to_json, 'Content-Type' => 'application/json').body)
         
     | 
| 
       35 
36 
     | 
    
         | 
| 
       36 
37 
     | 
    
         
             
                  ::InertiaRails.html_headers = res['head']
         
     | 
| 
       37 
     | 
    
         
            -
                  @render_method.call html: res['body'].html_safe, layout:  
     | 
| 
      
 38 
     | 
    
         
            +
                  @render_method.call html: res['body'].html_safe, layout: layout, locals: (view_data).merge({page: page})
         
     | 
| 
       38 
39 
     | 
    
         
             
                end
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                def  
     | 
| 
       41 
     | 
    
         
            -
                   
     | 
| 
      
 41 
     | 
    
         
            +
                def layout
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @controller.send(:inertia_layout)
         
     | 
| 
      
 43 
     | 
    
         
            +
                end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
                def computed_props
         
     | 
| 
      
 46 
     | 
    
         
            +
                  _props = ::InertiaRails.shared_data(@controller).send(prop_merge_method, @props).select do |key, prop|
         
     | 
| 
       42 
47 
     | 
    
         
             
                    if rendering_partial_component?
         
     | 
| 
       43 
48 
     | 
    
         
             
                      key.in? partial_keys
         
     | 
| 
       44 
49 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -46,13 +51,13 @@ module InertiaRails 
     | 
|
| 
       46 
51 
     | 
    
         
             
                    end
         
     | 
| 
       47 
52 
     | 
    
         
             
                  end
         
     | 
| 
       48 
53 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                  deep_transform_values(_props, lambda {|prop| prop.respond_to?(:call) ? @controller.instance_exec(&prop) : prop })
         
     | 
| 
      
 54 
     | 
    
         
            +
                  deep_transform_values(_props, lambda {|prop| prop.respond_to?(:call) ? @controller.instance_exec(&prop) : prop }).with_indifferent_access
         
     | 
| 
       50 
55 
     | 
    
         
             
                end
         
     | 
| 
       51 
56 
     | 
    
         | 
| 
       52 
57 
     | 
    
         
             
                def page
         
     | 
| 
       53 
58 
     | 
    
         
             
                  {
         
     | 
| 
       54 
59 
     | 
    
         
             
                    component: component,
         
     | 
| 
       55 
     | 
    
         
            -
                    props:  
     | 
| 
      
 60 
     | 
    
         
            +
                    props: computed_props,
         
     | 
| 
       56 
61 
     | 
    
         
             
                    url: @request.original_fullpath,
         
     | 
| 
       57 
62 
     | 
    
         
             
                    version: ::InertiaRails.version,
         
     | 
| 
       58 
63 
     | 
    
         
             
                  }
         
     | 
| 
         @@ -71,5 +76,9 @@ module InertiaRails 
     | 
|
| 
       71 
76 
     | 
    
         
             
                def rendering_partial_component?
         
     | 
| 
       72 
77 
     | 
    
         
             
                  @request.inertia_partial? && @request.headers['X-Inertia-Partial-Component'] == component
         
     | 
| 
       73 
78 
     | 
    
         
             
                end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                def prop_merge_method
         
     | 
| 
      
 81 
     | 
    
         
            +
                  @deep_merge ? :deep_merge : :merge
         
     | 
| 
      
 82 
     | 
    
         
            +
                end
         
     | 
| 
       74 
83 
     | 
    
         
             
              end
         
     | 
| 
       75 
84 
     | 
    
         
             
            end
         
     | 
    
        data/lib/inertia_rails/rspec.rb
    CHANGED
    
    | 
         @@ -74,7 +74,7 @@ end 
     | 
|
| 
       74 
74 
     | 
    
         | 
| 
       75 
75 
     | 
    
         
             
            RSpec::Matchers.define :have_exact_props do |expected_props|
         
     | 
| 
       76 
76 
     | 
    
         
             
              match do |inertia|
         
     | 
| 
       77 
     | 
    
         
            -
                expect(inertia.props).to eq expected_props
         
     | 
| 
      
 77 
     | 
    
         
            +
                expect(inertia.props).to eq expected_props.with_indifferent_access
         
     | 
| 
       78 
78 
     | 
    
         
             
              end
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
       80 
80 
     | 
    
         
             
              failure_message do |inertia|
         
     | 
| 
         @@ -84,7 +84,7 @@ end 
     | 
|
| 
       84 
84 
     | 
    
         | 
| 
       85 
85 
     | 
    
         
             
            RSpec::Matchers.define :include_props do |expected_props|
         
     | 
| 
       86 
86 
     | 
    
         
             
              match do |inertia|
         
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
      
 87 
     | 
    
         
            +
                expect(inertia.props).to include expected_props.with_indifferent_access
         
     | 
| 
       88 
88 
     | 
    
         
             
              end
         
     | 
| 
       89 
89 
     | 
    
         | 
| 
       90 
90 
     | 
    
         
             
              failure_message do |inertia|
         
     | 
    
        data/lib/inertia_rails.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: inertia_rails
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 3.1.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Brian Knoles
         
     | 
| 
         @@ -10,7 +10,7 @@ authors: 
     | 
|
| 
       10 
10 
     | 
    
         
             
            autorequire:
         
     | 
| 
       11 
11 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       12 
12 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       13 
     | 
    
         
            -
            date:  
     | 
| 
      
 13 
     | 
    
         
            +
            date: 2023-08-21 00:00:00.000000000 Z
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies:
         
     | 
| 
       15 
15 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       16 
16 
     | 
    
         
             
              name: rails
         
     | 
| 
         @@ -124,6 +124,20 @@ dependencies: 
     | 
|
| 
       124 
124 
     | 
    
         
             
                - - ">="
         
     | 
| 
       125 
125 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       126 
126 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 127 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 128 
     | 
    
         
            +
              name: debug
         
     | 
| 
      
 129 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 130 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 131 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 132 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 133 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 134 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 135 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 136 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 137 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 138 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 139 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 140 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       127 
141 
     | 
    
         
             
            description:
         
     | 
| 
       128 
142 
     | 
    
         
             
            email:
         
     | 
| 
       129 
143 
     | 
    
         
             
            - brain@bellawatt.com
         
     | 
| 
         @@ -184,7 +198,7 @@ licenses: 
     | 
|
| 
       184 
198 
     | 
    
         
             
            metadata:
         
     | 
| 
       185 
199 
     | 
    
         
             
              homepage_uri: https://github.com/inertiajs/inertia-rails
         
     | 
| 
       186 
200 
     | 
    
         
             
              source_code_uri: https://github.com/inertiajs/inertia-rails
         
     | 
| 
       187 
     | 
    
         
            -
              changelog_uri: https://github.com/inertiajs/inertia-rails/CHANGELOG.md
         
     | 
| 
      
 201 
     | 
    
         
            +
              changelog_uri: https://github.com/inertiajs/inertia-rails/blob/master/CHANGELOG.md
         
     | 
| 
       188 
202 
     | 
    
         
             
            post_install_message:
         
     | 
| 
       189 
203 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       190 
204 
     | 
    
         
             
            require_paths:
         
     | 
| 
         @@ -200,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       200 
214 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       201 
215 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       202 
216 
     | 
    
         
             
            requirements: []
         
     | 
| 
       203 
     | 
    
         
            -
            rubygems_version: 3. 
     | 
| 
      
 217 
     | 
    
         
            +
            rubygems_version: 3.4.10
         
     | 
| 
       204 
218 
     | 
    
         
             
            signing_key:
         
     | 
| 
       205 
219 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       206 
220 
     | 
    
         
             
            summary: Inertia adapter for Rails
         
     |