I''m seeing an error the first time I run a create after restarting my
webserver (thin). Same create succeeds on all following attempts.
Details:
ruby 1.9.2dev
rails 2.3.2
rack 0.9.1
thin 1.0.0
rmagick 2.9.1
I''m trying to get attachment_fu working in my current setup and have
run into a rather strange situation. The first image I try to load
produces the following diag in the logfile:
--------------------------
Processing ApplicationController#create (for 127.0.0.1 at 2009-04-25
09:50:27) [POST]
Parameters: {"authenticity_token"=>"EjZpcSwOswNpjZCHHhypx/
LdfR8m0AmW1Z2caF4/BVI=",
"mugshot"=>{"uploaded_data"=>#<File:/var/
folders/JP/JP7pZWhAHLy-es7AYViHF++++TI/-Tmp-/RackMultipart3767-2>},
"commit"=>"Create"}
NameError (undefined method `path'' for class
`ActionController::UploadedStringIO''):
<internal:prelude>:8:in `synchronize''
thin (1.0.0) lib/thin/connection.rb:63:in `pre_process''
thin (1.0.0) lib/thin/connection.rb:54:in `process''
thin (1.0.0) lib/thin/connection.rb:39:in `receive_data''
eventmachine (0.12.6) lib/eventmachine.rb:240:in `run_machine''
eventmachine (0.12.6) lib/eventmachine.rb:240:in `run''
thin (1.0.0) lib/thin/backends/base.rb:57:in `start''
thin (1.0.0) lib/thin/server.rb:150:in `start''
--------------------------
If I then simply reissue the request from the browser the create
action succeeds. From that point on, all attempts to follow the
new->create sequence succeed first try.
Out of curiosity, I tried the same with a new webrick in place of
thin. In that case the first attempt produces:
--------------------------
Processing ApplicationController#create (for ::1 at 2009-04-25
10:20:30) [POST]
Parameters: {"authenticity_token"=>"EjZpcSwOswNpjZCHHhypx/
LdfR8m0AmW1Z2caF4/BVI=",
"mugshot"=>{"uploaded_data"=>#<File:/var/
folders/JP/JP7pZWhAHLy-es7AYViHF++++TI/-Tmp-/RackMultipart4180-2>},
"commit"=>"Create"}
NameError (undefined method `path'' for class
`ActionController::UploadedStringIO''):
<internal:prelude>:8:in `synchronize''
/opt/RoR/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service''
/opt/RoR/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run''
/opt/RoR/lib/ruby/1.9.1/webrick/server.rb:183:in `block in
start_thread''
--------------------------
The browser retry yields a "Webrick - stopped (abort trap)" so no
further attemps are possible. Ignoring for a momemt the different
ways the two servers handle the error allows me to focus on the
common:
--------------------------
NameError
(undef...''path''...''Act...::UploadedStringIO'')
<internal:prelude>:8:in `synchronize''
--------------------------
Unfortunately, that''s as far as I can get. I''m clueless on
how to
resolve the ''synchronize'' reference. There''s
obviously a point in the
sequence (?rack?) that is not correctly dealing with the
initialization.
The fact that thin will allow a do-over is fortunate for me because it
lets me believe the problem isn''t in my code (for a change;-).
Actually it''s not my code but the trivial "mugshots" example
that can
be found through attachment_fu/README. But, in the interest of full
disclosure:
from mugshots_controller.rb
--------------------------
def new
@mugshot = Mugshot.new
end
def create
@mugshot = Mugshot.new(params[:mugshot])
logger.info "Mugshot attributes hash: #
{@mugshot.attributes.inspect}"
logger.info "Mugshots_url: #{mugshots_url.inspect}"
if @mugshot.save
flash[:notice] = ''Mugshot was successfully created.''
redirect_to mugshots_url
else
render :action => :new
end
end
--------------------------
from mugshots/new.html.erb
--------------------------
<%= error_messages_for :mugshot %>
<% form_for(:mugshot, :url => mugshots_path,
:html => { :multipart => true }) do |f| -%>
<p>
<label for="mugshot">Upload A Mugshot:</label>
<%= f.file_field :uploaded_data %>
</p>
<p>
<%= submit_tag ''Create'' %>
</p>
<% end -%>
--------------------------
thanks in advance,
rick
Dmitry Sokurenko
2009-Apr-25 23:21 UTC
Re: non-repeatable "undefined error ''path''" error
I think it''s a bit too early to run all that stuff on 1.9.2. Dmitry
certainly a valid reply, not exactly what I was expecting though... On Apr 25, 1:21 pm, Dmitry Sokurenko <Dmitry.Sokure...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I think it''s a bit too early to run all that stuff on 1.9.2. > > Dmitry