我使用了很多我的rails应用程序 在开发中我每天都会得到这些错误1-2次
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中我发现了这些错误
(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
然后再次使用
启动它 sudo service unicorn_myapp start
我检查了我的用户模型和相关模型的回调,但一切正常,注册工作非常好,重新启动unicorn之前我说过
我正在使用ruby 2.1.5和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'
她是我的路线.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
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
我的rails跟踪错误
…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'
答案 0 :(得分:1)
我不确定错误是什么,但是通过查看gem源代码,def polymorphic_url
方法,
(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
看来,您的resource
对象已成为收集或User.new
,然后它变为:plural
并为您提供该错误。我的猜测是尝试调试那个方向,HTH