remotipart 1.3.1 → 1.4.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/History.rdoc +9 -0
- data/lib/remotipart/middleware.rb +2 -2
- data/lib/remotipart/rails/railtie.rb +8 -4
- data/lib/remotipart/rails/version.rb +1 -1
- data/lib/remotipart/render_overrides.rb +5 -3
- data/lib/remotipart/view_helper.rb +11 -0
- data/remotipart.gemspec +18 -18
- data/vendor/assets/javascripts/jquery.iframe-transport.js +38 -29
- data/vendor/assets/javascripts/jquery.remotipart.js +1 -1
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8cd835a42fa4b39f9472499d433674c148afed2b
         | 
| 4 | 
            +
              data.tar.gz: 487e0694c4122c8002f6da0f2b6466ec2b870a78
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4173afdbc5e749e062b62d7370ff379d70302645fa0be40f0593d17f8a88d494f63c0606a396d79419ad3eb9b8776e53ea34f838deecc3748a9ee73d63688ba7
         | 
| 7 | 
            +
              data.tar.gz: 457e29566c8271872d61703a68db861223dd5686421652cb35bdd7b7a75546bfe5afd900eefc848d7899c2a6bc2ebd056eeed000c13d8e8cd16a5514bfbcd8db
         | 
    
        data/History.rdoc
    CHANGED
    
    | @@ -1,5 +1,14 @@ | |
| 1 1 | 
             
            = History
         | 
| 2 2 |  | 
| 3 | 
            +
            === 1.4.0 / 2018-04-09
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Added jQuery 3 compatibility.
         | 
| 6 | 
            +
            * Changed to use ActiveSupport lazy load hooks on initialization.
         | 
| 7 | 
            +
            * Changed jQuery iframe-transport to v1.0.1.
         | 
| 8 | 
            +
            * Fixed to preserve original return value of render call for non-remotipart requests.
         | 
| 9 | 
            +
            * Fixed remote javascript with " not being executed.
         | 
| 10 | 
            +
            * Fixed method signature of render_with_remotipart, making RJS templates not usable.
         | 
| 11 | 
            +
             | 
| 3 12 | 
             
            === 1.3.1 / 2016-10-06
         | 
| 4 13 |  | 
| 5 14 | 
             
            * Fixed remote form submit not working with Firefox 49.
         | 
| @@ -24,8 +24,8 @@ module Remotipart | |
| 24 24 | 
             
                    end
         | 
| 25 25 |  | 
| 26 26 | 
             
                    # Override the accepted format, because it isn't what we really want
         | 
| 27 | 
            -
                    if params['X- | 
| 28 | 
            -
                      env['HTTP_ACCEPT'] = params['X- | 
| 27 | 
            +
                    if params['X-HTTP-Accept']
         | 
| 28 | 
            +
                      env['HTTP_ACCEPT'] = params['X-HTTP-Accept']
         | 
| 29 29 | 
             
                    end
         | 
| 30 30 | 
             
                  end
         | 
| 31 31 |  | 
| @@ -23,13 +23,17 @@ module Remotipart | |
| 23 23 | 
             
                  end
         | 
| 24 24 |  | 
| 25 25 | 
             
                  initializer "remotipart.view_helper" do
         | 
| 26 | 
            -
                     | 
| 27 | 
            -
             | 
| 26 | 
            +
                    ActiveSupport.on_load(:action_view) do
         | 
| 27 | 
            +
                      include RequestHelper
         | 
| 28 | 
            +
                      include ViewHelper
         | 
| 29 | 
            +
                    end
         | 
| 28 30 | 
             
                  end
         | 
| 29 31 |  | 
| 30 32 | 
             
                  initializer "remotipart.controller_helper" do
         | 
| 31 | 
            -
                     | 
| 32 | 
            -
             | 
| 33 | 
            +
                    ActiveSupport.on_load(:action_controller) do
         | 
| 34 | 
            +
                      include RequestHelper
         | 
| 35 | 
            +
                      include RenderOverrides
         | 
| 36 | 
            +
                    end
         | 
| 33 37 | 
             
                  end
         | 
| 34 38 |  | 
| 35 39 | 
             
                  initializer "remotipart.include_middelware" do
         | 
| @@ -12,14 +12,16 @@ module Remotipart | |
| 12 12 | 
             
                  end
         | 
| 13 13 | 
             
                end
         | 
| 14 14 |  | 
| 15 | 
            -
                def render_with_remotipart | 
| 16 | 
            -
                  render_without_remotipart | 
| 15 | 
            +
                def render_with_remotipart(*args, &block)
         | 
| 16 | 
            +
                  render_return_value = render_without_remotipart(*args, &block)
         | 
| 17 17 | 
             
                  if remotipart_submitted?
         | 
| 18 18 | 
             
                    textarea_body = response.content_type == 'text/html' ? html_escape(response.body) : response.body
         | 
| 19 19 | 
             
                    response.body = %{<script type=\"text/javascript\">try{window.parent.document;}catch(err){document.domain=document.domain;}</script> <textarea data-type=\"#{response.content_type}\" data-status=\"#{response.response_code}\" data-statusText=\"#{response.message}\">#{textarea_body}</textarea>}
         | 
| 20 20 | 
             
                    response.content_type = ::Rails.version >= '5' ? Mime[:html] : Mime::HTML
         | 
| 21 | 
            +
                    response_body
         | 
| 22 | 
            +
                  else
         | 
| 23 | 
            +
                    render_return_value
         | 
| 21 24 | 
             
                  end
         | 
| 22 | 
            -
                  response_body
         | 
| 23 25 | 
             
                end
         | 
| 24 26 | 
             
              end
         | 
| 25 27 | 
             
            end
         | 
| @@ -1,9 +1,20 @@ | |
| 1 1 | 
             
            module Remotipart
         | 
| 2 2 | 
             
              module ViewHelper
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                def escape_javascript(javascript)
         | 
| 5 | 
            +
                  if remotipart_submitted?
         | 
| 6 | 
            +
                    super("#{javascript}")
         | 
| 7 | 
            +
                  else
         | 
| 8 | 
            +
                    super
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
                alias_method :j, :escape_javascript
         | 
| 12 | 
            +
             | 
| 3 13 | 
             
                #No longer used
         | 
| 4 14 | 
             
                #Retrained to prevent issues while updating
         | 
| 5 15 | 
             
                def remotipart_response(options = {}, &block)
         | 
| 6 16 | 
             
                  with_output_buffer(&block)
         | 
| 7 17 | 
             
                end
         | 
| 18 | 
            +
             | 
| 8 19 | 
             
              end
         | 
| 9 20 | 
             
            end
         | 
    
        data/remotipart.gemspec
    CHANGED
    
    | @@ -2,18 +2,18 @@ | |
| 2 2 | 
             
            # DO NOT EDIT THIS FILE DIRECTLY
         | 
| 3 3 | 
             
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         | 
| 4 4 | 
             
            # -*- encoding: utf-8 -*-
         | 
| 5 | 
            -
            # stub: remotipart 1. | 
| 5 | 
            +
            # stub: remotipart 1.4.0 ruby lib
         | 
| 6 6 |  | 
| 7 7 | 
             
            Gem::Specification.new do |s|
         | 
| 8 | 
            -
              s.name = "remotipart"
         | 
| 9 | 
            -
              s.version = "1. | 
| 8 | 
            +
              s.name = "remotipart".freeze
         | 
| 9 | 
            +
              s.version = "1.4.0"
         | 
| 10 10 |  | 
| 11 | 
            -
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 12 | 
            -
              s.require_paths = ["lib"]
         | 
| 13 | 
            -
              s.authors = ["Greg Leppert", "Steve Schwartz"]
         | 
| 14 | 
            -
              s.date = " | 
| 15 | 
            -
              s.description = "Remotipart is a Ruby on Rails gem enabling remote multipart forms (AJAX style file uploads) with jquery-rails.\n    This gem augments the native Rails 3 jQuery-UJS remote form function enabling asynchronous file uploads with little to no modification to your application.\n    "
         | 
| 16 | 
            -
              s.email = ["greg@formasfunction.com", "steve@alfajango.com"]
         | 
| 11 | 
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
         | 
| 12 | 
            +
              s.require_paths = ["lib".freeze]
         | 
| 13 | 
            +
              s.authors = ["Greg Leppert".freeze, "Steve Schwartz".freeze]
         | 
| 14 | 
            +
              s.date = "2018-04-09"
         | 
| 15 | 
            +
              s.description = "Remotipart is a Ruby on Rails gem enabling remote multipart forms (AJAX style file uploads) with jquery-rails.\n    This gem augments the native Rails 3 jQuery-UJS remote form function enabling asynchronous file uploads with little to no modification to your application.\n    ".freeze
         | 
| 16 | 
            +
              s.email = ["greg@formasfunction.com".freeze, "steve@alfajango.com".freeze]
         | 
| 17 17 | 
             
              s.extra_rdoc_files = [
         | 
| 18 18 | 
             
                "LICENSE",
         | 
| 19 19 | 
             
                "README.rdoc"
         | 
| @@ -41,23 +41,23 @@ Gem::Specification.new do |s| | |
| 41 41 | 
             
                "vendor/assets/javascripts/jquery.iframe-transport.js",
         | 
| 42 42 | 
             
                "vendor/assets/javascripts/jquery.remotipart.js"
         | 
| 43 43 | 
             
              ]
         | 
| 44 | 
            -
              s.homepage = "http://opensource.alfajango.com/remotipart/"
         | 
| 45 | 
            -
              s.rubygems_version = "2.5. | 
| 46 | 
            -
              s.summary = "Remotipart is a Ruby on Rails gem enabling remote multipart forms (AJAX style file uploads) with jquery-rails."
         | 
| 44 | 
            +
              s.homepage = "http://opensource.alfajango.com/remotipart/".freeze
         | 
| 45 | 
            +
              s.rubygems_version = "2.5.2".freeze
         | 
| 46 | 
            +
              s.summary = "Remotipart is a Ruby on Rails gem enabling remote multipart forms (AJAX style file uploads) with jquery-rails.".freeze
         | 
| 47 47 |  | 
| 48 48 | 
             
              if s.respond_to? :specification_version then
         | 
| 49 49 | 
             
                s.specification_version = 4
         | 
| 50 50 |  | 
| 51 51 | 
             
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         | 
| 52 | 
            -
                  s.add_development_dependency(%q<rake | 
| 53 | 
            -
                  s.add_development_dependency(%q<jeweler | 
| 52 | 
            +
                  s.add_development_dependency(%q<rake>.freeze, [">= 0"])
         | 
| 53 | 
            +
                  s.add_development_dependency(%q<jeweler>.freeze, [">= 0"])
         | 
| 54 54 | 
             
                else
         | 
| 55 | 
            -
                  s.add_dependency(%q<rake | 
| 56 | 
            -
                  s.add_dependency(%q<jeweler | 
| 55 | 
            +
                  s.add_dependency(%q<rake>.freeze, [">= 0"])
         | 
| 56 | 
            +
                  s.add_dependency(%q<jeweler>.freeze, [">= 0"])
         | 
| 57 57 | 
             
                end
         | 
| 58 58 | 
             
              else
         | 
| 59 | 
            -
                s.add_dependency(%q<rake | 
| 60 | 
            -
                s.add_dependency(%q<jeweler | 
| 59 | 
            +
                s.add_dependency(%q<rake>.freeze, [">= 0"])
         | 
| 60 | 
            +
                s.add_dependency(%q<jeweler>.freeze, [">= 0"])
         | 
| 61 61 | 
             
              end
         | 
| 62 62 | 
             
            end
         | 
| 63 63 |  | 
| @@ -1,12 +1,12 @@ | |
| 1 | 
            -
            // This [jQuery]( | 
| 2 | 
            -
            // [transport]( | 
| 1 | 
            +
            // This [jQuery](https://jquery.com/) plugin implements an `<iframe>`
         | 
| 2 | 
            +
            // [transport](https://api.jquery.com/jQuery.ajax/#extending-ajax) so that
         | 
| 3 3 | 
             
            // `$.ajax()` calls support the uploading of files using standard HTML file
         | 
| 4 4 | 
             
            // input fields. This is done by switching the exchange from `XMLHttpRequest`
         | 
| 5 5 | 
             
            // to a hidden `iframe` element containing a form that is submitted.
         | 
| 6 6 |  | 
| 7 | 
            -
            // The [source for the plugin]( | 
| 8 | 
            -
            // is available on [Github]( | 
| 9 | 
            -
            //  | 
| 7 | 
            +
            // The [source for the plugin](https://github.com/cmlenz/jquery-iframe-transport)
         | 
| 8 | 
            +
            // is available on [Github](https://github.com/) and licensed under the [MIT
         | 
| 9 | 
            +
            // license](https://github.com/cmlenz/jquery-iframe-transport/blob/master/LICENSE).
         | 
| 10 10 |  | 
| 11 11 | 
             
            // ## Usage
         | 
| 12 12 |  | 
| @@ -70,9 +70,9 @@ | |
| 70 70 | 
             
            // impossible for the javascript code to determine the HTTP status code of the
         | 
| 71 71 | 
             
            // servers response. Effectively, all of the calls you make will look like they
         | 
| 72 72 | 
             
            // are getting successful responses, and thus invoke the `done()` or
         | 
| 73 | 
            -
            // `complete()` | 
| 74 | 
            -
            //  | 
| 75 | 
            -
            //  | 
| 73 | 
            +
            // `complete()` callbacks. You can only communicate problems using the content
         | 
| 74 | 
            +
            // of the response payload. For example, consider using a JSON response such as
         | 
| 75 | 
            +
            // the following to indicate a problem with an uploaded file:
         | 
| 76 76 |  | 
| 77 77 | 
             
            //     <textarea data-type="application/json">
         | 
| 78 78 | 
             
            //       {"ok": false, "message": "Please only upload reasonably sized files."}
         | 
| @@ -96,6 +96,7 @@ | |
| 96 96 | 
             
              // switches to the "iframe" data type if it is `true`.
         | 
| 97 97 | 
             
              $.ajaxPrefilter(function(options, origOptions, jqXHR) {
         | 
| 98 98 | 
             
                if (options.iframe) {
         | 
| 99 | 
            +
                  options.originalURL = options.url;
         | 
| 99 100 | 
             
                  return "iframe";
         | 
| 100 101 | 
             
                }
         | 
| 101 102 | 
             
              });
         | 
| @@ -109,18 +110,18 @@ | |
| 109 110 | 
             
                    name = "iframe-" + $.now(),
         | 
| 110 111 | 
             
                    files = $(options.files).filter(":file:enabled"),
         | 
| 111 112 | 
             
                    markers = null,
         | 
| 112 | 
            -
                    accepts;
         | 
| 113 | 
            +
                    accepts = null;
         | 
| 113 114 |  | 
| 114 115 | 
             
                // This function gets called after a successful submission or an abortion
         | 
| 115 116 | 
             
                // and should revert all changes made to the page to enable the
         | 
| 116 117 | 
             
                // submission via this transport.
         | 
| 117 118 | 
             
                function cleanUp() {
         | 
| 118 | 
            -
                   | 
| 119 | 
            -
                    $( | 
| 120 | 
            -
                     | 
| 119 | 
            +
                  files.each(function(i, file) {
         | 
| 120 | 
            +
                    var $file = $(file);
         | 
| 121 | 
            +
                    $file.data("clone").replaceWith($file);
         | 
| 121 122 | 
             
                  });
         | 
| 122 123 | 
             
                  form.remove();
         | 
| 123 | 
            -
                  iframe. | 
| 124 | 
            +
                  iframe.one("load", function() { iframe.remove(); });
         | 
| 124 125 | 
             
                  iframe.attr("src", "about:blank");
         | 
| 125 126 | 
             
                }
         | 
| 126 127 |  | 
| @@ -129,9 +130,14 @@ | |
| 129 130 | 
             
                // (unsupported) conversion from "iframe" to the actual type.
         | 
| 130 131 | 
             
                options.dataTypes.shift();
         | 
| 131 132 |  | 
| 133 | 
            +
                // Use the data from the original AJAX options, as it doesn't seem to be 
         | 
| 134 | 
            +
                // copied over since jQuery 1.7.
         | 
| 135 | 
            +
                // See https://github.com/cmlenz/jquery-iframe-transport/issues/6
         | 
| 136 | 
            +
                options.data = origOptions.data;
         | 
| 137 | 
            +
             | 
| 132 138 | 
             
                if (files.length) {
         | 
| 133 139 | 
             
                  form = $("<form enctype='multipart/form-data' method='post'></form>").
         | 
| 134 | 
            -
                    hide().attr({action: options. | 
| 140 | 
            +
                    hide().attr({action: options.originalURL, target: name});
         | 
| 135 141 |  | 
| 136 142 | 
             
                  // If there is any additional data specified via the `data` option,
         | 
| 137 143 | 
             
                  // we add it as hidden fields to the form. This (currently) requires
         | 
| @@ -155,21 +161,27 @@ | |
| 155 161 | 
             
                  $("<input type='hidden' value='IFrame' name='X-Requested-With' />").
         | 
| 156 162 | 
             
                    appendTo(form);
         | 
| 157 163 |  | 
| 158 | 
            -
                  // Borrowed straight from the JQuery source
         | 
| 159 | 
            -
                  // Provides a way of specifying the accepted data type similar to  | 
| 160 | 
            -
                   | 
| 161 | 
            -
             | 
| 162 | 
            -
                    options.accepts[  | 
| 163 | 
            -
             | 
| 164 | 
            -
                   | 
| 165 | 
            -
                    . | 
| 164 | 
            +
                  // Borrowed straight from the JQuery source.
         | 
| 165 | 
            +
                  // Provides a way of specifying the accepted data type similar to the
         | 
| 166 | 
            +
                  // HTTP "Accept" header
         | 
| 167 | 
            +
                  if (options.dataTypes[0] && options.accepts[options.dataTypes[0]]) {
         | 
| 168 | 
            +
                    accepts = options.accepts[options.dataTypes[0]] +
         | 
| 169 | 
            +
                              (options.dataTypes[0] !== "*" ? ", */*; q=0.01" : "");
         | 
| 170 | 
            +
                  } else {
         | 
| 171 | 
            +
                    accepts = options.accepts["*"];
         | 
| 172 | 
            +
                  }
         | 
| 173 | 
            +
                  $("<input type='hidden' name='X-HTTP-Accept'>").
         | 
| 174 | 
            +
                    attr("value", accepts).appendTo(form);
         | 
| 166 175 |  | 
| 167 176 | 
             
                  // Move the file fields into the hidden form, but first remember their
         | 
| 168 177 | 
             
                  // original locations in the document by replacing them with disabled
         | 
| 169 178 | 
             
                  // clones. This should also avoid introducing unwanted changes to the
         | 
| 170 179 | 
             
                  // page layout during submission.
         | 
| 171 180 | 
             
                  markers = files.after(function(idx) {
         | 
| 172 | 
            -
                     | 
| 181 | 
            +
                    var $this = $(this),
         | 
| 182 | 
            +
                        $clone = $this.clone().prop("disabled", true);
         | 
| 183 | 
            +
                    $this.data("clone", $clone);
         | 
| 184 | 
            +
                    return $clone;
         | 
| 173 185 | 
             
                  }).next();
         | 
| 174 186 | 
             
                  files.appendTo(form);
         | 
| 175 187 |  | 
| @@ -183,13 +195,13 @@ | |
| 183 195 |  | 
| 184 196 | 
             
                      // The first load event gets fired after the iframe has been injected
         | 
| 185 197 | 
             
                      // into the DOM, and is used to prepare the actual submission.
         | 
| 186 | 
            -
                      iframe. | 
| 198 | 
            +
                      iframe.one("load", function() {
         | 
| 187 199 |  | 
| 188 200 | 
             
                        // The second load event gets fired when the response to the form
         | 
| 189 201 | 
             
                        // submission is received. The implementation detects whether the
         | 
| 190 202 | 
             
                        // actual payload is embedded in a `<textarea>` element, and
         | 
| 191 203 | 
             
                        // prepares the required conversions to be made in that case.
         | 
| 192 | 
            -
                        iframe. | 
| 204 | 
            +
                        iframe.one("load", function() {
         | 
| 193 205 | 
             
                          var doc = this.contentWindow ? this.contentWindow.document :
         | 
| 194 206 | 
             
                            (this.contentDocument ? this.contentDocument : this.document),
         | 
| 195 207 | 
             
                            root = doc.documentElement ? doc.documentElement : doc.body,
         | 
| @@ -204,9 +216,6 @@ | |
| 204 216 | 
             
                                root ? (root.textContent || root.innerText) : null
         | 
| 205 217 | 
             
                            };
         | 
| 206 218 | 
             
                          cleanUp();
         | 
| 207 | 
            -
                          if (!jqXHR.responseText) {
         | 
| 208 | 
            -
                            jqXHR.responseText = content.text;
         | 
| 209 | 
            -
                          }
         | 
| 210 219 | 
             
                          completeCallback(status, statusText, content, type ?
         | 
| 211 220 | 
             
                            ("Content-Type: " + type) :
         | 
| 212 221 | 
             
                            null);
         | 
| @@ -226,7 +235,7 @@ | |
| 226 235 | 
             
                    // aborted.
         | 
| 227 236 | 
             
                    abort: function() {
         | 
| 228 237 | 
             
                      if (iframe !== null) {
         | 
| 229 | 
            -
                        iframe.unbind("load").attr("src", " | 
| 238 | 
            +
                        iframe.unbind("load").attr("src", "about:blank");
         | 
| 230 239 | 
             
                        cleanUp();
         | 
| 231 240 | 
             
                      }
         | 
| 232 241 | 
             
                    }
         | 
| @@ -51,7 +51,7 @@ | |
| 51 51 | 
             
                      // Allow remotipartSubmit to be cancelled if needed
         | 
| 52 52 | 
             
                      if ($.rails.fire(form, 'ajax:remotipartSubmit', [xhr, settings])) {
         | 
| 53 53 | 
             
                        // Second verse, same as the first
         | 
| 54 | 
            -
                        $.rails.ajax(settings). | 
| 54 | 
            +
                        $.rails.ajax(settings).always(function(data){
         | 
| 55 55 | 
             
                          $.rails.fire(form, 'ajax:remotipartComplete', [data]);
         | 
| 56 56 | 
             
                        });
         | 
| 57 57 | 
             
                        setTimeout(function(){ $.rails.disableFormElements(form); }, 20);
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: remotipart
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Greg Leppert
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2018-04-09 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: rake
         | 
| @@ -92,7 +92,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 92 92 | 
             
                  version: '0'
         | 
| 93 93 | 
             
            requirements: []
         | 
| 94 94 | 
             
            rubyforge_project: 
         | 
| 95 | 
            -
            rubygems_version: 2.5. | 
| 95 | 
            +
            rubygems_version: 2.5.2
         | 
| 96 96 | 
             
            signing_key: 
         | 
| 97 97 | 
             
            specification_version: 4
         | 
| 98 98 | 
             
            summary: Remotipart is a Ruby on Rails gem enabling remote multipart forms (AJAX style
         |