奇怪的错误与设计和独角兽 [英] strange error with devise and unicorn

查看:130
本文介绍了奇怪的错误与设计和独角兽的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在开发过程中使用了许多我的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆