I'm working on my first RoR project and attempting to use the Paperclip gem, but I'm running into an error I can't seem to figure out:
wrong number of arguments (1 for 0)
app/controllers/events_controller.rb:43:in `create'
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"OBYHA0M+TA93sNF3uqrJ/zvnnEyWJUREn4NcOl0ExfA=",
"event"=>{"title"=>"",
"image"=>#<ActionDispatch::Http::UploadedFile:0x007f803802b1f0 #original_filename="icon.png",
#content_type="image/png",
#headers="Content-Disposition: form-data; name=\"event[image]\"; filename=\"icon.png\"\r\nContent-Type: image/png\r\n",
#tempfile=#<File:/tmp/RackMultipart20130217-21480-1molvwa>>,
"description"=>"",
"date"=>"",
"time"=>""},
"commit"=>"Create Event"}
I understand that in events_controller.rb in the create method, too many arguments are being passed in. However, I followed the QuickStart instructions on Paperclip's Github so I'm not sure why I'm getting this error.
Here is my code for events_controller.rb
def create
#event = Event.create( params[:event] )
end
Just for debugging, I tried changing the line to Event.create( params[] ), at which point the error changed from wrong number of arguments (1 for 0) to wrong number of arguments (0 for 1).
Here is my code for event.rb
class Event < ActiveRecord::Base
attr_accessible :date, :description, :time, :title, :image
has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
end
I've checked that I'm running the correct versions for everything. I have Paperclip 3.4.0, Rails 3.2.12, Ruby 1.9.3, and ImageMagick 6.8.3-1. I'm using Ubuntu 12.04 LTS.
I've looked at quite a few similar problems but most seemed to occur a few years ago and were resolved in subsequent updates to Paperclip. None of the solutions I've found in similar posts have worked for me, and unfortunately I just have enough Rails experience yet to know what's going on. I realize I'm probably making a total newbie mistake, in which case I apologize but would still really appreciate some help to get me on the right track.
Please let me know if any additional code or information would be useful for debugging.
Thanks for your time!
Application trace:
cocaine (0.3.2) lib/cocaine/command_line.rb:63:in run'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/helpers.rb:31:in
run'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/geometry_detector_factory.rb:18:in
block in geometry_string' activesupport (3.2.12)
lib/active_support/core_ext/kernel/reporting.rb:43:insilence_stream'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/geometry_detector_factory.rb:17:in
geometry_string'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/geometry_detector_factory.rb:9:in
make'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/geometry.rb:26:in
from_file'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/thumbnail.rb:35:in
initialize'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/processor.rb:33:in
new'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/processor.rb:33:in
make'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:431:in
block in post_process_style'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:430:in
each'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:430:in
inject'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:430:in
post_process_style'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:423:in
block in post_process_styles'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:422:in
each'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:422:in
post_process_styles'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:415:in
block (2 levels) in post_process' activesupport (3.2.12)
lib/active_support/callbacks.rb:403:in
_run__3384881169595487878__image_post_process__96086910066492375__callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:405:in
__run_callback' activesupport (3.2.12)
lib/active_support/callbacks.rb:385:in
_run_image_post_process_callbacks' activesupport (3.2.12)
lib/active_support/callbacks.rb:81:inrun_callbacks'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/callbacks.rb:26:in
run_paperclip_callbacks'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:414:in
block in post_process' activesupport (3.2.12)
lib/active_support/callbacks.rb:403:in
_run__3384881169595487878__post_process__96086910066492375__callbacks' activesupport (3.2.12) lib/active_support/callbacks.rb:405:in
__run_callback' activesupport (3.2.12)
lib/active_support/callbacks.rb:385:in _run_post_process_callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:81:in
run_callbacks'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/callbacks.rb:26:in
run_paperclip_callbacks'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:413:in
post_process'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip/attachment.rb:108:in
assign'
/home/user/.rvm/gems/ruby-1.9.3-p385/bundler/gems/paperclip-dcd2774e7913/lib/paperclip.rb:200:inblock in has_attached_file' activerecord (3.2.12)
lib/active_record/attribute_assignment.rb:85:in block in
assign_attributes' activerecord (3.2.12)
lib/active_record/attribute_assignment.rb:78:ineach' activerecord
(3.2.12) lib/active_record/attribute_assignment.rb:78:in
assign_attributes' activerecord (3.2.12)
lib/active_record/base.rb:497:ininitialize' activerecord (3.2.12)
lib/active_record/persistence.rb:44:in new' activerecord (3.2.12)
lib/active_record/persistence.rb:44:increate'
app/controllers/events_controller.rb:43:in create' actionpack
(3.2.12) lib/action_controller/metal/implicit_render.rb:4:in
send_action' actionpack (3.2.12)
lib/abstract_controller/base.rb:167:in process_action' actionpack
(3.2.12) lib/action_controller/metal/rendering.rb:10:in
process_action' actionpack (3.2.12)
lib/abstract_controller/callbacks.rb:18:in block in process_action'
activesupport (3.2.12) lib/active_support/callbacks.rb:414:in
run_3332570171411252513__process_action_3320642634939127128_callbacks' activesupport (3.2.12) lib/active_support/callbacks.rb:405:in
__run_callback' activesupport (3.2.12)
lib/active_support/callbacks.rb:385:in_run_process_action_callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:81:in
run_callbacks' actionpack (3.2.12)
lib/abstract_controller/callbacks.rb:17:inprocess_action' actionpack
(3.2.12) lib/action_controller/metal/rescue.rb:29:in process_action'
actionpack (3.2.12)
lib/action_controller/metal/instrumentation.rb:30:inblock in
process_action' activesupport (3.2.12)
lib/active_support/notifications.rb:123:in block in instrument'
activesupport (3.2.12)
lib/active_support/notifications/instrumenter.rb:20:ininstrument'
activesupport (3.2.12) lib/active_support/notifications.rb:123:in
instrument' actionpack (3.2.12)
lib/action_controller/metal/instrumentation.rb:29:inprocess_action'
actionpack (3.2.12)
lib/action_controller/metal/params_wrapper.rb:207:in process_action'
activerecord (3.2.12)
lib/active_record/railties/controller_runtime.rb:18:in
process_action' actionpack (3.2.12)
lib/abstract_controller/base.rb:121:in process' actionpack (3.2.12)
lib/abstract_controller/rendering.rb:45:inprocess' actionpack
(3.2.12) lib/action_controller/metal.rb:203:in dispatch' actionpack
(3.2.12) lib/action_controller/metal/rack_delegation.rb:14:in
dispatch' actionpack (3.2.12) lib/action_controller/metal.rb:246:in
block in action' actionpack (3.2.12)
lib/action_dispatch/routing/route_set.rb:73:incall' actionpack
(3.2.12) lib/action_dispatch/routing/route_set.rb:73:in dispatch'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:36:in
call' journey (1.0.4) lib/journey/router.rb:68:in block in call'
journey (1.0.4) lib/journey/router.rb:56:ineach' journey (1.0.4)
lib/journey/router.rb:56:in call' actionpack (3.2.12)
lib/action_dispatch/routing/route_set.rb:601:incall' actionpack
(3.2.12)
lib/action_dispatch/middleware/best_standards_support.rb:17:in call'
rack (1.4.5) lib/rack/etag.rb:23:incall' rack (1.4.5)
lib/rack/conditionalget.rb:35:in call' actionpack (3.2.12)
lib/action_dispatch/middleware/head.rb:14:incall' actionpack
(3.2.12) lib/action_dispatch/middleware/params_parser.rb:21:in call'
actionpack (3.2.12) lib/action_dispatch/middleware/flash.rb:242:in
call' rack (1.4.5) lib/rack/session/abstract/id.rb:210:in context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:incall' actionpack
(3.2.12) lib/action_dispatch/middleware/cookies.rb:341:in call'
activerecord (3.2.12) lib/active_record/query_cache.rb:64:incall'
activerecord (3.2.12)
lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in
call' actionpack (3.2.12)
lib/action_dispatch/middleware/callbacks.rb:28:inblock in call'
activesupport (3.2.12) lib/active_support/callbacks.rb:405:in
_run__1281245379307539657__call__96086910066492375__callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:405:in
__run_callback' activesupport (3.2.12)
lib/active_support/callbacks.rb:385:in _run_call_callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:81:in
run_callbacks' actionpack (3.2.12)
lib/action_dispatch/middleware/callbacks.rb:27:in call' actionpack
(3.2.12) lib/action_dispatch/middleware/reloader.rb:65:incall'
actionpack (3.2.12) lib/action_dispatch/middleware/remote_ip.rb:31:in
call' actionpack (3.2.12)
lib/action_dispatch/middleware/debug_exceptions.rb:16:incall'
actionpack (3.2.12)
lib/action_dispatch/middleware/show_exceptions.rb:56:in call'
railties (3.2.12) lib/rails/rack/logger.rb:32:incall_app' railties
(3.2.12) lib/rails/rack/logger.rb:16:in block in call' activesupport
(3.2.12) lib/active_support/tagged_logging.rb:22:intagged' railties
(3.2.12) lib/rails/rack/logger.rb:16:in call' actionpack (3.2.12)
lib/action_dispatch/middleware/request_id.rb:22:incall' rack (1.4.5)
lib/rack/methodoverride.rb:21:in call' rack (1.4.5)
lib/rack/runtime.rb:17:incall' activesupport (3.2.12)
lib/active_support/cache/strategy/local_cache.rb:72:in call' rack
(1.4.5) lib/rack/lock.rb:15:incall' actionpack (3.2.12)
lib/action_dispatch/middleware/static.rb:62:in call' railties
(3.2.12) lib/rails/engine.rb:479:incall' railties (3.2.12)
lib/rails/application.rb:223:in call' rack (1.4.5)
lib/rack/content_length.rb:14:incall' railties (3.2.12)
lib/rails/rack/log_tailer.rb:17:in call' rack (1.4.5)
lib/rack/handler/webrick.rb:59:inservice'
/home/user/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/webrick/httpserver.rb:138:in
service'
/home/user/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/webrick/httpserver.rb:94:in
run'
/home/user/.rvm/rubies/ruby-1.9.3-p385/lib/ruby/1.9.1/webrick/server.rb:191:in
`block in start_thread'
You are using the wrong version of cocaine. Run bundle install then make sure you are using bundle exec rails s to start your rails server.
The run method in the newer version of cocaine (~> 0.4.0) takes an optional argument (def run(interpolations = {})) that the older version (0.3.2) didn't.
See comments above.
Related
Getting a NoMethodError when trying to load up one of the pages on my website built with Rails. See the full stack trace below.
If I change false to true in production.rb at line
config.cache_classes = false
then the problem goes away, but I have to restart the Rails server every time I make a change to any file. It seems like the problem is related to checking the type of a column in my DB, but I can't figure out how to resolve it.
Controller action:
def manage
#view_data = {}
if (#view_data[:product] = Product.find(params[:id])).nil?
raise ActionController::RoutingError.new('Not Found')
end
#view_data[:backlog] = Task.where("product_id = ? AND status < ?", params[:id], Task::STATUS_COMPLETED)
.page(params[:page]).per(10)
#view_data[:completed] = Task.where(product_id: params[:id], status: Task::STATUS_COMPLETED)
.page(params[:page]).per(10)
end
There are four columns on the 'tasks' table that are type datetime--I think those are causing the problem, but I'm not fully sure.
Full stack trace:
NoMethodError - undefined method `type' for nil:NilClass:
activerecord (3.2.13) lib/active_record/attribute_methods/time_zone_conversion.rb:60:in `create_time_zone_conversion_attribute?'
activerecord (3.2.13) lib/active_record/attribute_methods/time_zone_conversion.rb:24:in `attribute_cast_code'
activerecord (3.2.13) lib/active_record/attribute_methods/serialization.rb:80:in `attribute_cast_code'
activerecord (3.2.13) lib/active_record/attribute_methods/read.rb:72:in `define_method_attribute'
activerecord (3.2.13) lib/active_record/attribute_methods/primary_key.rb:29:in `define_method_attribute'
activemodel (3.2.13) lib/active_model/attribute_methods.rb:267:in `block in define_attribute_method'
activemodel (3.2.13) lib/active_model/attribute_methods.rb:260:in `define_attribute_method'
activemodel (3.2.13) lib/active_model/attribute_methods.rb:256:in `block in define_attribute_methods'
activemodel (3.2.13) lib/active_model/attribute_methods.rb:256:in `define_attribute_methods'
activerecord (3.2.13) lib/active_record/attribute_methods.rb:66:in `block in define_attribute_methods'
activerecord (3.2.13) lib/active_record/attribute_methods.rb:63:in `define_attribute_methods'
activerecord (3.2.13) lib/active_record/attribute_methods.rb:168:in `respond_to?'
activesupport (3.2.13) lib/active_support/callbacks.rb:398:in `__run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in `_run_initialize_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in `run_callbacks'
activerecord (3.2.13) lib/active_record/base.rb:501:in `initialize'
app/controllers/products_controller.rb:14:in `manage'
actionpack (3.2.13) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.13) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.13) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.13) lib/active_support/callbacks.rb:425:in `_run__115665803178931257__process_action__4080704983955383443__callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.13) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.13) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.13) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.13) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.13) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.13) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.13) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.13) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:36:in `call'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:612:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.5) lib/rack/etag.rb:23:in `call'
rack (1.4.5) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.13) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `_run__4157597128006817714__call__2909158845673021585__callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.13) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.13) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/static.rb:63:in `call'
railties (3.2.13) lib/rails/engine.rb:479:in `call'
railties (3.2.13) lib/rails/application.rb:223:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
railties (3.2.13) lib/rails/rack/log_tailer.rb:17:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
In my case I had a model with 76 attributes, and one of them was named 'class', this was causing the error and exception.
So, I did:
rake/bin db:rollback
rails d scaffold MyModel
rename 'class' column in scaffold generator command
rename 'class' in csv header
rails g scaffold MyModel blablaba..
rake/bin db:migrate
import data
rails s
And works :-)
It seems like your error is related to this bug. There are some proposed solutions that may be relevant for your situation, or you could try this fix by alsemyonov.
Try setting config.autoload_once_paths
I am working on a legacy RoR app and am in the midst of configuring devise (as a replacement for Restful_authentication plugin). I have ran into a very peculiar error. When I try to go to /users/sign_in page I get this
NoMethodError in Devise::SessionsController#new
undefined method `is_navigational_format?' for #<Devise::SessionsController:0x000000034b2078>
The only time I have seen this error referenced is when someone is trying to override the devise session-controller with their own. (https://groups.google.com/d/msg/plataformatec-devise/jyYNhaRztDU/MLsjwxRvf_YJ) I have not tried to do that.
I have installed devise correctly (followed their wiki). I have added devise_for :users to my routes. I have restarted the server, many many times. If there is any more info, or files needed, I will be happy to provide them.
Edit when I ran $LOAD_PATH.dup in the rails console the output included
"/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/lib", "/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/app/controllers", "/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/app/helpers", "/usr/local/rvm/gems/ruby-1.9.3-p429/gems/devise-2.2.4/app/mailers"
I am using Rails 3.2.13, ruby 1.9.3 and devise 2.2.4
This is the full-stack trace
devise (2.2.4) app/controllers/devise_controller.rb:119:in require_no_authentication'
activesupport (3.2.13) lib/active_support/callbacks.rb:418:inrun_1218703357271506681__process_action_3906451143611010656_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in __run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in_run_process_action_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in run_callbacks'
actionpack (3.2.13) lib/abstract_controller/callbacks.rb:17:inprocess_action'
actionpack (3.2.13) lib/action_controller/metal/rescue.rb:29:in process_action'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:30:inblock in process_action'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in block in instrument'
activesupport (3.2.13) lib/active_support/notifications/instrumenter.rb:20:ininstrument'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in instrument'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:29:inprocess_action'
actionpack (3.2.13) lib/action_controller/metal/params_wrapper.rb:207:in process_action'
actionpack (3.2.13) lib/abstract_controller/base.rb:121:inprocess'
actionpack (3.2.13) lib/abstract_controller/rendering.rb:45:in process'
actionpack (3.2.13) lib/action_controller/metal.rb:203:indispatch'
actionpack (3.2.13) lib/action_controller/metal/rack_delegation.rb:14:in dispatch'
actionpack (3.2.13) lib/action_controller/metal.rb:246:inblock in action'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:73:in call'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:73:indispatch'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:36:in call'
actionpack (3.2.13) lib/action_dispatch/routing/mapper.rb:42:incall'
journey (1.0.4) lib/journey/router.rb:68:in block in call'
journey (1.0.4) lib/journey/router.rb:56:ineach'
journey (1.0.4) lib/journey/router.rb:56:in call'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:612:incall'
warden (1.2.1) lib/warden/manager.rb:35:in block in call'
warden (1.2.1) lib/warden/manager.rb:34:incatch'
arden (1.2.1) lib/warden/manager.rb:34:in call'
actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:incall'
rack (1.4.5) lib/rack/etag.rb:23:in call'
rack (1.4.5) lib/rack/conditionalget.rb:25:incall'
actionpack (3.2.13) lib/action_dispatch/middleware/head.rb:14:in call'
actionpack (3.2.13) lib/action_dispatch/middleware/params_parser.rb:21:incall'
actionpack (3.2.13) lib/action_dispatch/middleware/flash.rb:242:in call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:incontext'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in call'
actionpack (3.2.13) lib/action_dispatch/middleware/cookies.rb:341:incall'
activerecord (3.2.13) lib/active_record/query_cache.rb:64:in call'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:incall'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:28:in block in call'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:inrun_3871622813520347987_call_3063468228496691759__callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in __run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in_run_call_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in run_callbacks'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:27:incall'
actionpack (3.2.13) lib/action_dispatch/middleware/reloader.rb:65:in call'
actionpack (3.2.13) lib/action_dispatch/middleware/remote_ip.rb:31:incall'
actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:16:in call'
actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:incall'
railties (3.2.13) lib/rails/rack/logger.rb:32:in call_app'
railties (3.2.13) lib/rails/rack/logger.rb:16:inblock in call'
activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:in tagged'
railties (3.2.13) lib/rails/rack/logger.rb:16:incall'
actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:in call'
rack (1.4.5) lib/rack/methodoverride.rb:21:incall'
rack (1.4.5) lib/rack/runtime.rb:17:in call'
activesupport (3.2.13) lib/active_support/cache/strategy/local_cache.rb:72:incall'
rack (1.4.5) lib/rack/lock.rb:15:in call'
actionpack (3.2.13) lib/action_dispatch/middleware/static.rb:63:incall'
railties (3.2.13) lib/rails/engine.rb:479:in call'
railties (3.2.13) lib/rails/application.rb:223:incall'
railties (3.2.13) lib/rails/railtie/configurable.rb:30:in method_missing'
passenger (4.0.2) lib/phusion_passenger/rack/thread_handler_extension.rb:77:inprocess_request'
passenger (4.0.2) lib/phusion_passenger/request_handler/thread_handler.rb:135:in accept_and_process_next_request'
passenger (4.0.2) lib/phusion_passenger/request_handler/thread_handler.rb:106:inmain_loop'
passenger (4.0.2) lib/phusion_passenger/request_handler.rb:449:in block (4 levels) in start_threads'
passenger (4.0.2) lib/phusion_passenger/utils/robust_interruption.rb:108:indisable_interruptions'
passenger (4.0.2) lib/phusion_passenger/request_handler.rb:444:in `block (3 levels) in start_threads'
I have a tricky scenario I need to implement and can't figure out how to do it. I'm trying to create a form that passes its data in a hash labelled 'message' to a controller that will then create a message object, but I can't use form_for because I need to use hidden_field tag and not hidden_field.
Here is the form I have so far:
=form_tag(:action => 'create', :controller => 'messages', :method => :get) do
=text_area :message, :message, :size => '40x5'
=hidden_field_tag(:message, :subject => "RE:#{#message.subject}")
=hidden_field_tag(:message, :parent => #message.id)
=hidden_field_tag(:message, :receiver => #message.sender)
=submit_tag 'Reply'
I want the controller to receive:
{"message"=>"{:message=>"How are you?", :subject=>"Hi", :parent=>nil, :receiver=>2}", "commit"=>"Reply", "method"=>"get", "action"=>"create", "controller"=>"messages"}
however, I'm receiving:
{"message"=>"{:receiver=>2}", "commit"=>"Reply", "method"=>"get", "action"=>"create", "controller"=>"messages"}
and the value of the text area is being given the value of the message I'm replying to.
Can anyone help me?
Edit: Upon implementing Russell's answer, I now receive:
Message(#39922460) expected, got String(#15633780)
Here's the full trace:
activerecord (3.2.13) lib/active_record/associations/association.rb:204:in `raise_on_type_mismatch'
activerecord (3.2.13) lib/active_record/associations/belongs_to_association.rb:6:in `replace'
activerecord (3.2.13) lib/active_record/associations/singular_association.rb:17:in `writer'
activerecord (3.2.13) lib/active_record/associations/builder/association.rb:51:in `block in define_writers'
activerecord (3.2.13) lib/active_record/attribute_assignment.rb:85:in `block in assign_attributes'
activerecord (3.2.13) lib/active_record/attribute_assignment.rb:78:in `each'
activerecord (3.2.13) lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
activerecord (3.2.13) lib/active_record/base.rb:498:in `initialize'
activerecord (3.2.13) lib/active_record/validations.rb:39:in `new'
activerecord (3.2.13) lib/active_record/validations.rb:39:in `create!'
app/controllers/messages_controller.rb:13:in `create'
actionpack (3.2.13) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.13) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.13) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.13) lib/active_support/callbacks.rb:425:in `_run__3805623263237724248__process_action__1465637019578896381__callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.13) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.13) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.13) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.13) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.13) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.13) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.13) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.13) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:36:in `call'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `each'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:612:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.5) lib/rack/etag.rb:23:in `call'
rack (1.4.5) lib/rack/conditionalget.rb:35:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.13) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `_run__3699448979629391707__call__1119864259513439622__callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.13) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.13) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/static.rb:63:in `call'
railties (3.2.13) lib/rails/engine.rb:479:in `call'
railties (3.2.13) lib/rails/application.rb:223:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
railties (3.2.13) lib/rails/rack/log_tailer.rb:17:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
/home/renee/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/home/renee/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/home/renee/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
I think you probably want something closer to this (not tested):
=form_tag(:action => 'create', :controller => 'messages', :method => :get) do
=text_area "message[message]", :size => '40x5'
=hidden_field_tag("message[subject]", "RE:#{#message.subject}")
=hidden_field_tag("message[parent]", #message.id)
=hidden_field_tag("message[receiver]", #message.sender)
=submit_tag 'Reply'
This question relates to switching from sqlite to mysql in rails prior to doing any database operations, while following the Ruby on Rails Tutorial (2nd ed.).
Before I did any database operations with the Ruby on Rails Tutorial (2nd ed.), I switched the database parameters in the config/database.yml to use mysql. Everything has been working up to section 7.1.3. So far the users table was created and a sample user was added to the table successfully. However, when I go to test the show users page at users/1 I receive the error message below. Is there something else that needs to be done when using a mysql database instead of sqlite? Thank you in advance for any support!
Error:
ActiveRecord::StatementInvalid in UsersController#show
Could not find table 'users'
Full Trace:
activerecord (3.2.11) lib/active_record/connection_adapters/sqlite_adapter.rb:472:in `table_structure'
activerecord (3.2.11) lib/active_record/connection_adapters/sqlite_adapter.rb:346:in `columns'
activerecord (3.2.11) lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
activerecord (3.2.11) lib/active_record/model_schema.rb:228:in `yield'
activerecord (3.2.11) lib/active_record/model_schema.rb:228:in `default'
activerecord (3.2.11) lib/active_record/model_schema.rb:228:in `columns'
activerecord (3.2.11) lib/active_record/model_schema.rb:237:in `columns_hash'
activerecord (3.2.11) lib/active_record/relation/delegation.rb:7:in `columns_hash'
activerecord (3.2.11) lib/active_record/relation/finder_methods.rb:331:in `find_one'
activerecord (3.2.11) lib/active_record/relation/finder_methods.rb:312:in `find_with_ids'
activerecord (3.2.11) lib/active_record/relation/finder_methods.rb:107:in `find'
activerecord (3.2.11) lib/active_record/querying.rb:5:in `find'
app/controllers/users_controller.rb:4:in `show'
actionpack (3.2.11) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.11) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.11) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.11) lib/active_support/callbacks.rb:414:in `_run__1973165003296325481__process_action__197160741547540830__callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.11) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.11) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.11) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.11) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.11) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.11) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.11) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.11) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.11) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.11) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.11) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.11) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:36:in `call'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `each'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.11) lib/action_dispatch/routing/route_set.rb:601:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.5) lib/rack/etag.rb:23:in `call'
rack (1.4.5) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.11) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.11) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `_run__2423197318852707609__call__2019361553739003282__callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.11) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.11) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.11) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
railties (3.2.11) lib/rails/engine.rb:479:in `call'
railties (3.2.11) lib/rails/application.rb:223:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
/opt/bitnami/ruby/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/opt/bitnami/ruby/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/opt/bitnami/ruby/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
From the stacktrace you provided, it looks like your app is not pointing at your mysql database.
activerecord (3.2.11) lib/active_record/connection_adapters/sqlite_adapter.rb:472:intable_structure'` <-- points at the sqlite_adapter rather than a mysql adapter
Make sure you use the mysql2 gem and don't forget to run bundle install after modifying your gemfile. Also be sure to restart your server after modifying your database.yml file.
I find this really strange, so I'm hopeful someone can help me out. I'm using Devise, and have my user model defined like so:
class User < ActiveRecord::Base
devise :database_authenticatable,
:registerable,
:token_authenticatable,
:recoverable,
:rememberable,
:trackable,
:validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation
attr_accessible :authentication_token
en
When I try to sign up a new user, I get the following error:
ArgumentError
This isn't very helpful, because it doesn't provide any other information.
Here are the parameters:
{"utf8"=>"✓",
"authenticity_token"=>"9VwmXYwBHEvdDxuPmyHu6tjcKeM6QoBtz6Y4ipBTtjQ=",
"user"=>{"email"=>"jeremy#[redacted].ca",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]"},
"commit"=>"Sign up"}
Below is the stack trace, hopefully someone else can make sense of it.
bcrypt-ruby (3.0.1) lib/bcrypt.rb:160:in `create'
devise (2.2.3) lib/devise/models/database_authenticatable.rb:110:in `password_digest'
devise (2.2.3) lib/devise/models/database_authenticatable.rb:37:in `password='
activerecord (3.2.12) lib/active_record/attribute_assignment.rb:85:in `block in assign_attributes'
activerecord (3.2.12) lib/active_record/attribute_assignment.rb:78:in `each'
activerecord (3.2.12) lib/active_record/attribute_assignment.rb:78:in `assign_attributes'
activerecord (3.2.12) lib/active_record/base.rb:497:in `initialize'
devise (2.2.3) lib/devise/models/registerable.rb:20:in `new'
devise (2.2.3) lib/devise/models/registerable.rb:20:in `new_with_session'
devise (2.2.3) app/controllers/devise/registrations_controller.rb:87:in `build_resource'
devise (2.2.3) app/controllers/devise/registrations_controller.rb:13:in `create'
actionpack (3.2.12) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.2.12) lib/abstract_controller/base.rb:167:in `process_action'
actionpack (3.2.12) lib/action_controller/metal/rendering.rb:10:in `process_action'
actionpack (3.2.12) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
activesupport (3.2.12) lib/active_support/callbacks.rb:436:in `_run__2695083164076933069__process_action__522201399773442049__callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.12) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.12) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.12) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.12) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.12) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.12) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.12) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.12) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.12) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.12) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.12) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.12) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.12) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.12) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.12) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:36:in `call'
actionpack (3.2.12) lib/action_dispatch/routing/mapper.rb:42:in `call'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `each'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.12) lib/action_dispatch/routing/route_set.rb:601:in `call'
warden (1.2.1) lib/warden/manager.rb:35:in `block in call'
warden (1.2.1) lib/warden/manager.rb:34:in `catch'
warden (1.2.1) lib/warden/manager.rb:34:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.5) lib/rack/etag.rb:23:in `call'
rack (1.4.5) lib/rack/conditionalget.rb:35:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.12) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.12) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.12) lib/active_support/callbacks.rb:405:in `_run__1001537658589897327__call__4072859572188315975__callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.12) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.12) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.12) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.12) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.12) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.12) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.12) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.12) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.12) lib/action_dispatch/middleware/static.rb:62:in `call'
railties (3.2.12) lib/rails/engine.rb:479:in `call'
railties (3.2.12) lib/rails/application.rb:223:in `call'
railties (3.2.12) lib/rails/railtie/configurable.rb:30:in `method_missing'
The problem is that the value of config.stretches in config/initializers/devise.rb is too high (it can't be higher than 31). Change it to a lower value and things will work again.
So how did I figure this out? Here's how:
From the stack trace, you can see that the function that throws the ArgumentError in bcrypt-ruby is:
def create(secret, options = { :cost => BCrypt::Engine::DEFAULT_COST })
raise ArgumentError if options[:cost] > 31
Password.new(BCrypt::Engine.hash_secret(secret, BCrypt::Engine.generate_salt(options[:cost]), options[:cost]))
end
Ok, so the problem is that Devise is sending a cost higher than 31 (which is the maximum allowed value). Let's look at the Devise call (again from the stack trace):
def password_digest(password)
::BCrypt::Password.create("#{password}#{self.class.pepper}", :cost => self.class.stretches).to_s
end
And that's how we find the problem. :)