<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>The Dev Blog: Fixing multipart POST in Rails</title>
    <link>http://devblog.famundo.com/articles/2006/05/30/fixing-multipart-post-in-rails</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Putting Family Management on Rails!</description>
    <item>
      <title>Fixing multipart POST in Rails</title>
      <description>&lt;p&gt;Our API is  &lt;a href="http://en.wikipedia.org/wiki/REST"&gt;REST&lt;/a&gt; based, and so we need all the REST verbs to work. Unfortunately Rails doesn't work correctly with multipart PUT submits. The fix is very simple, and it's a one line change in the file  actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="punct"&gt;---&lt;/span&gt; &lt;span class="ident"&gt;actionpack&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;lib&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;action_controller&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;cgi_ext&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;raw_post_data_fix&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rb&lt;/span&gt;       &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;revision&lt;/span&gt; &lt;span class="number"&gt;4380&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="punct"&gt;+++&lt;/span&gt; &lt;span class="ident"&gt;actionpack&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;lib&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;action_controller&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;cgi_ext&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;raw_post_data_fix&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rb&lt;/span&gt;       &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;working&lt;/span&gt; &lt;span class="ident"&gt;copy&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="attribute"&gt;@@&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;15&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;7&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt;&lt;span class="number"&gt;15&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt;&lt;span class="number"&gt;7&lt;/span&gt; &lt;span class="attribute"&gt;@@&lt;/span&gt;
         &lt;span class="ident"&gt;method&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="symbol"&gt;:get&lt;/span&gt;
       &lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="punct"&gt;-&lt;/span&gt;      &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;method&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="symbol"&gt;:post&lt;/span&gt; &lt;span class="punct"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;boundary&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;multipart_form_boundary&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
&lt;span class="punct"&gt;+&lt;/span&gt;      &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="punct"&gt;((&lt;/span&gt;&lt;span class="ident"&gt;method&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="symbol"&gt;:post&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;||&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;method&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="symbol"&gt;:put&lt;/span&gt;&lt;span class="punct"&gt;))&lt;/span&gt; &lt;span class="punct"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;boundary&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;multipart_form_boundary&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
         &lt;span class="attribute"&gt;@multipart&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;true&lt;/span&gt;
         &lt;span class="attribute"&gt;@params&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;read_multipart&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;boundary&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="constant"&gt;Integer&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;env_table&lt;/span&gt;&lt;span class="punct"&gt;['&lt;/span&gt;&lt;span class="string"&gt;CONTENT_LENGTH&lt;/span&gt;&lt;span class="punct"&gt;']))&lt;/span&gt;
       &lt;span class="keyword"&gt;else&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The only change is adding the :put method to the if that makes the params into multiparams.&lt;/p&gt;

&lt;p&gt;I'm posting this as a bug with the patch and the related tests to the Rail trac. Hopefuly it'll be included in a coming release of Rails.&lt;/p&gt;</description>
      <pubDate>Tue, 30 May 2006 15:31:00 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:bc7a8c176f39d1ed6bd4d5650aca2447</guid>
      <author>guy.naor@famundo.com (Guy Naor)</author>
      <link>http://devblog.famundo.com/articles/2006/05/30/fixing-multipart-post-in-rails</link>
      <category>Rails</category>
      <trackback:ping>http://devblog.famundo.com/articles/trackback/16</trackback:ping>
    </item>
    <item>
      <title>"Fixing multipart POST in Rails" by Jeremy</title>
      <description>&lt;p&gt;&lt;a href="http://dev.rubyonrails.org/changeset/4388" rel="nofollow"&gt;http://dev.rubyonrails.org/changeset/4388&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks Guy!&lt;/p&gt;</description>
      <pubDate>Thu, 01 Jun 2006 08:01:33 -0400</pubDate>
      <guid isPermaLink="false">urn:uuid:</guid>
      <link>http://devblog.famundo.com/articles/2006/05/30/fixing-multipart-post-in-rails#comment-16</link>
    </item>
  </channel>
</rss>
