奇怪的错误与设计和独角兽 [英] strange error with devise and unicorn
问题描述
我在开发过程中使用了许多我的rails应用程序
,每天1-2次得到这些错误
I used devise with many of my rails apps in development I am getting these error every day 1-2 times
NoMethodError: undefined method `users_url' for #<RegistrationsController:0x007f14cd6cd958>
.0/gems/turbolinks-2.5.3/lib/turbolinks/
xhr_headers.rb: 21:in `_compute_redirect_to_location'
…0224210521/app/controllers/
/home/remmon/apps/myapp/releases/20150224210521/app/controllers/registrations_controller.rb
registrations_controller.rb: 26:in `create'
…le/ruby/2.1.0/gems/journey-1.0.4/lib/journey/
router.rb: 68:in `block in call'
…le/ruby/2.1.0/gems/journey-1.0.4/lib/journey/
router.rb: 56:in `each'
…le/ruby/2.1.0/gems/journey-1.0.4/lib/journey/
router.rb: 56:in `call'
…uby/2.1.0/gems/omniauth-1.2.2/lib/omniauth/
strategy.rb: 186:in `call!'
…uby/2.1.0/gems/omniauth-1.2.2/lib/omniauth/
strategy.rb: 164:in `call'
…ems/rack-mobile-detect-0.4.0/lib/rack/
mobile-detect.rb: 164:in `call'
…dle/ruby/2.1.0/gems/warden-1.2.3/lib/warden/
manager.rb: 35:in `block in call'
…dle/ruby/2.1.0/gems/warden-1.2.3/lib/warden/
manager.rb: 34:in `catch'
…dle/ruby/2.1.0/gems/warden-1.2.3/lib/warden/
manager.rb: 34:in `call'
…red/bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
etag.rb: 23:in `call'
…/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
conditionalget.rb: 35:in `call'
…/2.1.0/gems/rack-1.4.5/lib/rack/session/abstract/
id.rb: 210:in `context'
…/2.1.0/gems/rack-1.4.5/lib/rack/session/abstract/
id.rb: 205:in `call'
…bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
sendfile.rb: 102:in `call'
…/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
methodoverride.rb: 21:in `call'
…/bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
runtime.rb: 17:in `call'
…red/bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
lock.rb: 15:in `call'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 136:in `forward'
…by0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 143:in `pass'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 155:in `invalidate'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 71:in `call!'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 51:in `call'
…undle/ruby/2.1.0/gems/rack-cors-0.3.1/lib/rack/
cors.rb: 72:in `call'
…by/2.1.0/gems/unicorn-4.8.3/lib/unicorn/
http_server.rb: 576:in `process_client'
在unicorn.log我发现这些错误
in unicorn.log I found these error
(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
(facebook) Callback phase initiated.
,唯一的解决方案是
sudo service unicorn_myapp stop
然后再次使用
then starting it again with
sudo service unicorn_myapp start
我检查了我的用户模型和相关模型的回调,但一切都正常,注册工作非常好,重新启动独角兽之后,我说过
I checked my user model and related models for callbacks ,but everything is working fine , registration working very well after restarting unicorn as I said before
我是使用ruby 2.1.5和rails 3.2.21
I am using ruby 2.1.5 and rails 3.2.21
这里是我的宝石文件
source 'https://rubygems.org'
gem 'rails', '3.2.21'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'twilio-ruby', '~> 3.12'
gem 'omniauth-facebook'
gem 'pg'
gem 'thumbs_up'
gem "lol_dba"
gem "paperclip", "~> 3.5.1"
gem 'acts-as-taggable-on'
gem 'acts_as_list'
gem 'mobile-fu', '~> 1.3.1'
gem 'time_difference'
gem 'mongo_mapper'
gem 'bson_ext', "1.10.0"
# Gems used only for assets and not required
# in production environments by default.
gem 'humanizer'
gem 'birthday', '~> 0.3.0'
gem "embedly"
gem 'jquery-fileupload-rails'
gem "aws-sdk"
gem 'zodiac'
#gem "searchkick"
gem "geocoder"
gem "strong_parameters"
gem 'redis-rails'
gem 'whenever', :require => false
gem "wysiwyg-rails"
gem "select2-rails"
gem 'mime-types', :require => 'mime/types'
#gem 'asset_sync' ,:git=>"git://github.com/rumblelabs/asset_sync.git"
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'turbo-sprockets-rails3'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
group :development do
gem 'thin'
gem 'better_errors',"1.1.0"
gem 'binding_of_caller'
gem 'meta_request'
gem 'rack-mini-profiler'
end
gem 'ransack'
# gem 'rack-mini-profiler'
#gem 'mailboxer',:git=>"git://github.com/remon/mailboxer"
gem "mailboxer"
gem 'turbolinks'
gem 'jquery-rails','2.1.4'
gem 'jquery-ui-rails','3.0.1'
#gem 'activeadmin', github: 'gregbell/active_admin', branch: '0-6-stable'
gem "devise"
gem 'cache_digests'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
gem 'jquery-datatables-rails', '~> 2.2.1'
#gem "pjax_rails"
gem 'dalli'
gem 'simple_form'
gem "cocoon"
gem "squeel"
gem "kaminari" ,"0.14.1"
gem "jbuilder",'0.9.1'
# Use unicorn as the app server
# Deploy with Capistrano
group :production do
gem 'unicorn'
end
#gem 'exception_notification'
gem 'newrelic_rpm'
gem 'rack-cors', :require => 'rack/cors'
#gem 'sidekiq',"2.17.7"
#gem "sidekiq", "3.3.0"
#gem 'capistrano-sidekiq', group: :development
gem 'daemons'
gem 'delayed_job_active_record'
gem 'sinatra', require: false
gem 'slim'
#gem 'capistrano-sidekiq', github: 'seuros/capistrano-sidekiq'
gem 'capistrano' ,"2.13.5"
#gem 'jquery-turbolinks'#
# To use debugger
# gem 'debugger'
她是我的routes.rb
her is my routes.rb
myApp::Application.routes.draw do
namespace :api, defaults: { format: "json" } do
devise_scope :user do
post 'users' => 'registrations#create', :as => 'user_registration'
post 'users/sign_in' => 'sessions#create', :as => 'user_session'
get '/users/sign_out' => 'sessions#destroy'
end
devise_for :users, :controllers => {:sessions=>"sessions", :registrations => "registrations", :passwords => "passwords" ,:omniauth_callbacks=>"omniauth_callbacks"}
##etc...
end
我的注册controller.rb
my registration controller.rb
class RegistrationsController < Devise::RegistrationsController
before_filter :prepare_for_mobile
respond_to :js ,:html
def create
build_resource(sign_up_params)
#resource.skip_confirmation!
resource_saved = resource.save
yield resource if block_given?
if resource_saved
if resource.active_for_authentication?
set_flash_message :notice, :signed_up if is_flashing_format?
sign_up(resource_name, resource)
respond_with resource, location: after_sign_up_path_for(resource)
else
set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_flashing_format?
expire_data_after_sign_in!
respond_with resource, location: after_inactive_sign_up_path_for(resource)
end
else
clean_up_passwords resource
@validatable = devise_mapping.validatable?
if @validatable
@minimum_password_length = resource_class.password_length.min
end
respond_with resource
end
end
def update
self.resource = resource_class.to_adapter.get!(send(:"current_#{resource_name}").to_key)
prev_unconfirmed_email = resource.unconfirmed_email if resource.respond_to?(:unconfirmed_email)
resource_updated = update_resource(resource, account_update_params)
yield resource if block_given?
if resource_updated
if is_flashing_format?
flash_key = update_needs_confirmation?(resource, prev_unconfirmed_email) ?
:update_needs_confirmation : :updated
set_flash_message :notice, flash_key
end
sign_in resource_name, resource, bypass: true
respond_with resource, location: after_update_path_for(resource)
else
clean_up_passwords resource
respond_with resource
end
end
protected
def after_sign_up_path_for(resource)
step2_path
end
end
我的轨迹错误
…2.21/lib/action_dispatch/routing/
/home/remoncpo/apps/optlar/shared/bundle/ruby/2.1.0/gems/actionpack-3.2.21/lib/action_dispatch/routing/polymorphic_routes.rb
polymorphic_routes.rb: 129:in `polymorphic_url'
…tionpack-3.2.21/lib/action_dispatch/routing/
url_for.rb: 150:in `url_for'
…pack-3.2.21/lib/action_controller/metal/
redirecting.rb: 105:in `_compute_redirect_to_location'
…pack-3.2.21/lib/action_controller/metal/
redirecting.rb: 74:in `redirect_to'
…actionpack-3.2.21/lib/action_controller/metal/
flash.rb: 25:in `redirect_to'
…-3.2.21/lib/action_controller/metal/
instrumentation.rb: 60:in `block in redirect_to'
…tivesupport-3.2.21/lib/active_support/
notifications.rb: 123:in `block in instrument'
….2.21/lib/active_support/notifications/
instrumenter.rb: 20:in `instrument'
…tivesupport-3.2.21/lib/active_support/
notifications.rb: 123:in `instrument'
…-3.2.21/lib/action_controller/metal/
instrumentation.rb: 59:in `redirect_to'
…onpack-3.2.21/lib/action_controller/metal/
responder.rb: 135:in `redirect_to'
…onpack-3.2.21/lib/action_controller/metal/
responder.rb: 193:in `navigation_behavior'
…onpack-3.2.21/lib/action_controller/metal/
responder.rb: 162:in `rescue in to_html'
…onpack-3.2.21/lib/action_controller/metal/
responder.rb: 160:in `to_html'
…onpack-3.2.21/lib/action_controller/metal/
responder.rb: 153:in `respond'
…onpack-3.2.21/lib/action_controller/metal/
responder.rb: 146:in `call'
…ck-3.2.21/lib/action_controller/metal/
mime_responds.rb: 239:in `respond_with'
…0228155747/app/controllers/
registrations_controller.rb: 26:in `create'
…-3.2.21/lib/action_controller/metal/
implicit_render.rb: 4:in `send_action'
…gems/actionpack-3.2.21/lib/abstract_controller/
base.rb: 167:in `process_action'
…onpack-3.2.21/lib/action_controller/metal/
rendering.rb: 10:in `process_action'
…actionpack-3.2.21/lib/abstract_controller/
callbacks.rb: 18:in `block in process_action'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 458:in `_run__2151305456332142610__process_action__86349116187657263__callbacks'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 405:in `__run_callback'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 385:in `_run_process_action_callbacks'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 81:in `run_callbacks'
…actionpack-3.2.21/lib/abstract_controller/
callbacks.rb: 17:in `process_action'
…ctionpack-3.2.21/lib/action_controller/metal/
rescue.rb: 29:in `process_action'
…-3.2.21/lib/action_controller/metal/
instrumentation.rb: 30:in `block in process_action'
…tivesupport-3.2.21/lib/active_support/
notifications.rb: 123:in `block in instrument'
….2.21/lib/active_support/notifications/
instrumenter.rb: 20:in `instrument'
…tivesupport-3.2.21/lib/active_support/
notifications.rb: 123:in `instrument'
…-3.2.21/lib/action_controller/metal/
instrumentation.rb: 29:in `process_action'
…k-3.2.21/lib/action_controller/metal/
params_wrapper.rb: 207:in `process_action'
….2.21/lib/active_record/railties/
controller_runtime.rb: 18:in `process_action'
…gems/actionpack-3.2.21/lib/abstract_controller/
base.rb: 121:in `process'
…actionpack-3.2.21/lib/abstract_controller/
rendering.rb: 45:in `process'
…/gems/actionpack-3.2.21/lib/action_controller/
metal.rb: 203:in `dispatch'
…-3.2.21/lib/action_controller/metal/
rack_delegation.rb: 14:in `dispatch'
…/gems/actionpack-3.2.21/lib/action_controller/
metal.rb: 246:in `block in action'
…onpack-3.2.21/lib/action_dispatch/routing/
route_set.rb: 73:in `call'
…onpack-3.2.21/lib/action_dispatch/routing/
route_set.rb: 73:in `dispatch'
…onpack-3.2.21/lib/action_dispatch/routing/
route_set.rb: 36:in `call'
…ctionpack-3.2.21/lib/action_dispatch/routing/
mapper.rb: 43:in `call'
…le/ruby/2.1.0/gems/journey-1.0.4/lib/journey/
router.rb: 68:in `block in call'
…le/ruby/2.1.0/gems/journey-1.0.4/lib/journey/
router.rb: 56:in `each'
…le/ruby/2.1.0/gems/journey-1.0.4/lib/journey/
router.rb: 56:in `call'
…onpack-3.2.21/lib/action_dispatch/routing/
route_set.rb: 608:in `call'
…uby/2.1.0/gems/omniauth-1.2.2/lib/omniauth/
strategy.rb: 186:in `call!'
…uby/2.1.0/gems/omniauth-1.2.2/lib/omniauth/
strategy.rb: 164:in `call'
…ems/rack-mobile-detect-0.4.0/lib/rack/
mobile-detect.rb: 164:in `call'
…dle/ruby/2.1.0/gems/warden-1.2.3/lib/warden/
manager.rb: 35:in `block in call'
…dle/ruby/2.1.0/gems/warden-1.2.3/lib/warden/
manager.rb: 34:in `catch'
…dle/ruby/2.1.0/gems/warden-1.2.3/lib/warden/
manager.rb: 34:in `call'
…b/action_dispatch/middleware/
best_standards_support.rb: 17:in `call'
…red/bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
etag.rb: 23:in `call'
…/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
conditionalget.rb: 35:in `call'
…tionpack-3.2.21/lib/action_dispatch/middleware/
head.rb: 14:in `call'
…3.2.21/lib/action_dispatch/middleware/
params_parser.rb: 21:in `call'
…ionpack-3.2.21/lib/action_dispatch/middleware/
flash.rb: 242:in `call'
…/2.1.0/gems/rack-1.4.5/lib/rack/session/abstract/
id.rb: 210:in `context'
…/2.1.0/gems/rack-1.4.5/lib/rack/session/abstract/
id.rb: 205:in `call'
…npack-3.2.21/lib/action_dispatch/middleware/
cookies.rb: 341:in `call'
…s/activerecord-3.2.21/lib/active_record/
query_cache.rb: 64:in `call'
…record/connection_adapters/abstract/
connection_pool.rb: 479:in `call'
…ack-3.2.21/lib/action_dispatch/middleware/
callbacks.rb: 28:in `block in call'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 405:in `_run__2996406385371488609__call__2187759682541233929__callbacks'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 405:in `__run_callback'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 385:in `_run_call_callbacks'
…s/activesupport-3.2.21/lib/active_support/
callbacks.rb: 81:in `run_callbacks'
…ack-3.2.21/lib/action_dispatch/middleware/
callbacks.rb: 27:in `call'
…bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
sendfile.rb: 102:in `call'
….21/lib/action_dispatch/middleware/
debug_exceptions.rb: 16:in `call'
…2.21/lib/action_dispatch/middleware/
show_exceptions.rb: 56:in `call'
…by/2.1.0/gems/railties-3.2.21/lib/rails/rack/
logger.rb: 32:in `call_app'
…by/2.1.0/gems/railties-3.2.21/lib/rails/rack/
logger.rb: 16:in `block in call'
…ivesupport-3.2.21/lib/active_support/
tagged_logging.rb: 22:in `tagged'
…by/2.1.0/gems/railties-3.2.21/lib/rails/rack/
logger.rb: 16:in `call'
…ck-3.2.21/lib/action_dispatch/middleware/
request_id.rb: 22:in `call'
…/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
methodoverride.rb: 21:in `call'
…/bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
runtime.rb: 17:in `call'
….2.21/lib/active_support/cache/strategy/
local_cache.rb: 72:in `call'
…red/bundle/ruby/2.1.0/gems/rack-1.4.5/lib/rack/
lock.rb: 15:in `call'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 136:in `forward'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 143:in `pass'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 155:in `invalidate'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 71:in `call!'
…by/2.1.0/gems/rack-cache-1.2/lib/rack/cache/
context.rb: 51:in `call'
…undle/ruby/2.1.0/gems/rack-cors-0.3.1/lib/rack/
cors.rb: 72:in `call'
…le/ruby/2.1.0/gems/railties-3.2.21/lib/rails/
engine.rb: 484:in `call'
…by/2.1.0/gems/railties-3.2.21/lib/rails/
application.rb: 231:in `call'
…gems/railties-3.2.21/lib/rails/railtie/
configurable.rb: 30:in `method_missing'
…by/2.1.0/gems/unicorn-4.8.3/lib/unicorn/
http_server.rb: 576:in `process_client'
…by/2.1.0/gems/unicorn-4.8.3/lib/unicorn/
http_server.rb: 670:in `worker_loop'
推荐答案
我不知道错误是什么,在宝石源代码中, def polymorphic_url
方法
I'm not sure what exact the error is, but by looking at the gem source code, def polymorphic_url
method,
( actionpack-4.1.5 /lib/action_dispatch/routing/polymorphic_routes.rb
# -- some code
inflection = if options[:action] && options[:action].to_s == "new"
args.pop
:singular
elsif (record.respond_to?(:persisted?) && !record.persisted?)
args.pop
:plural
elsif record.is_a?(Class)
args.pop
:plural
else
:singular
end
似乎,你的资源
对象成为两个集合或 User.new
,那么它变成:plural
,并给你这个错误。我的猜测是试图在这个方向调试,HTH
it seems like, your resource
object is become , either collection or User.new
, then it becomes :plural
and gives you that error. My guess is try to debug on that direction , HTH
这篇关于奇怪的错误与设计和独角兽的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!