我的请求在开发中工作正常。 我正在部署capistrano,并运行rbenv与Ruby 2.1.5和Rails 4.1.5。自动载入常量时检测到循环依赖项Api :: V1 :: Xxxxx :: Xxxxxx
原谅我,经过一天的半天试图让这个工作在生产和失败悲惨地我诉诸SO神希望奇迹。
我试图建立一个版本的API,而这一切的切换到Rails 4.XX之前的工作,但这里是堆栈跟踪:
namespace :api, defaults: { format: :json } do
scope module: :v1, constraints: ApiConstraints.new(version: 1) do
scope 'me', as: :my, defaults: { format: :json, user_id: 'me' } do
get 'transcript', :controller => 'users', :action => 'transcript', defaults: { format: :pdf }
resources :attendance, as: :attendance, :controller => 'users/attendance' do
post 'start', :controller => 'users/attendance'
post 'complete', :controller => 'users/attendance'
get 'certificate', :controller => 'users/attendance', defaults: { format: :pdf }
resources :assessments, as: :assessment, :controller => 'users/attendance/assessments' do
post 'answer', :controller => 'users/attendance/assessments'
post 'complete', :controller => 'users/attendance/assessments', :action => 'complete'
end
end
post 'studies', :controller => 'users', :action => 'studies'
post 'study', :controller => 'users', :action => 'study'
post 'unstudy', :controller => 'users', :action => 'unstudy'
end
resources :me
resources :users, defaults: { format: :json } do
resources :attendance, :controller => "users/attendance"
end
# scope 'system', :as => :system do
# match 'scripts/:action', via: [:get], :controller => 'system/scripts'
# end
get 'articles/latest'
resources :articles, defaults: {format: :json} do
end
resources :activities, :path => "activities", :controller => "activities", defaults: {format: :json} do
# resources :agendas, :path => "agenda", :controller => "activities/agenda"
# resources :activity_notes, :path => "notes", :controller => "activities/notes"
# resources :activity_credits, :path => "credits", :controller => "activities/credits"
# resources :activity_faculties, :path => "faculty", :controller => "activities/faculty"
# resources :activity_committees, :path => "committee", :controller => "activities/committee"
# resources :activity_finbudget, :path => "budget", :controller => "activities/budget"
# resources :activity_finfees, :path => "fees", :controller => "activities/fees"
# resources :activity_finledgers, :path => "ledger", :controller => "activities/ledger"
# resources :activity_finsupports, :path => "support", :controller => "activities/support"
# resources :attendees, :path => "participants", :controller => "activities/participants"
# resources :activity_application, :path => "application", :controller => "activities/application"
# resources :activity_pubgeneral, :path => "publish_info", :controller => "activities/publish_info"
# resources :activity_pubcomponent, :path => "components", :controller => "activities/components"
match 'reports/:action', via: [:get], :controller => "activities/reports", :defaults => { :format => 'pdf' }
end
end
end
:
App 10385 stdout: RuntimeError (Circular dependency detected while autoloading constant Api::V1::Activities::ReportsController):
App 10385 stdout: activesupport (4.1.5) lib/active_support/dependencies.rb:478:in `load_missing_constant'
App 10385 stdout: activesupport (4.1.5) lib/active_support/dependencies.rb:180:in `const_missing'
App 10385 stdout: activesupport (4.1.5) lib/active_support/inflector/methods.rb:240:in `const_get'
App 10385 stdout: activesupport (4.1.5) lib/active_support/inflector/methods.rb:240:in `block in constantize'
App 10385 stdout: activesupport (4.1.5) lib/active_support/inflector/methods.rb:236:in `each'
App 10385 stdout: activesupport (4.1.5) lib/active_support/inflector/methods.rb:236:in `inject'
App 10385 stdout: activesupport (4.1.5) lib/active_support/inflector/methods.rb:236:in `constantize'
App 10385 stdout: activesupport (4.1.5) lib/active_support/dependencies.rb:552:in `get'
App 10385 stdout: activesupport (4.1.5) lib/active_support/dependencies.rb:583:in `constantize'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:78:in `controller_reference'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:68:in `controller'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:46:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/routing/mapper.rb:45:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/journey/router.rb:71:in `block in call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/journey/router.rb:59:in `each'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/journey/router.rb:59:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/routing/route_set.rb:678:in `call'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:186:in `call!'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/strategy.rb:164:in `call'
App 10385 stdout: omniauth (1.2.2) lib/omniauth/builder.rb:59:in `call'
App 10385 stdout: warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
App 10385 stdout: warden (1.2.3) lib/warden/manager.rb:34:in `catch'
App 10385 stdout: warden (1.2.3) lib/warden/manager.rb:34:in `call'
App 10385 stdout: rack (1.5.2) lib/rack/etag.rb:23:in `call'
App 10385 stdout: rack (1.5.2) lib/rack/conditionalget.rb:25:in `call'
App 10385 stdout: rack (1.5.2) lib/rack/head.rb:11:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/flash.rb:254:in `call'
App 10385 stdout: rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
App 10385 stdout: rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/cookies.rb:560:in `call'
App 10385 stdout: activerecord (4.1.5) lib/active_record/query_cache.rb:36:in `call'
App 10385 stdout: activerecord (4.1.5) lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
App 10385 stdout: activesupport (4.1.5) lib/active_support/callbacks.rb:82:in `run_callbacks'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
App 10385 stdout: railties (4.1.5) lib/rails/rack/logger.rb:38:in `call_app'
App 10385 stdout: railties (4.1.5) lib/rails/rack/logger.rb:20:in `block in call'
App 10385 stdout: activesupport (4.1.5) lib/active_support/tagged_logging.rb:68:in `block in tagged'
App 10385 stdout: activesupport (4.1.5) lib/active_support/tagged_logging.rb:26:in `tagged'
App 10385 stdout: activesupport (4.1.5) lib/active_support/tagged_logging.rb:68:in `tagged'
App 10385 stdout: railties (4.1.5) lib/rails/rack/logger.rb:20:in `call'
App 10385 stdout: actionpack (4.1.5) lib/action_dispatch/middleware/request_id.rb:21:in `call'
App 10385 stdout: rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
App 10385 stdout: rack (1.5.2) lib/rack/runtime.rb:17:in `call'
App 10385 stdout: activesupport (4.1.5) lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
App 10385 stdout: action
App 10385 stdout: pack (4.1.5) lib/action_dispatch/middleware/static.rb:64:in `call'
App 10385 stdout: rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
App 10385 stdout: railties (4.1.5) lib/rails/engine.rb:514:in `call'
App 10385 stdout: railties (4.1.5) lib/rails/application.rb:144:in `call'
App 10385 stdout: /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/passenger-4.0.43/lib/phusion_passenger/rack/thread_handler_extension.rb:74:in `process_request'
App 10385 stdout: /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/passenger-4.0.43/lib/phusion_passenger/request_handler/thread_handler.rb:141:in `accept_and_process_next_request'
App 10385 stdout: /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/passenger-4.0.43/lib/phusion_passenger/request_handler/thread_handler.rb:109:in `main_loop'
App 10385 stdout: /usr/local/rbenv/versions/1.9.3-p448/lib/ruby/gems/1.9.1/gems/passenger-4.0.43/lib/phusion_passenger/request_handler.rb:448:in `block (3 levels) in start_threads'
从routes.rb中摘录
和控制器结构是: app -api -v1 --- activities_controller.rb(扩展BaseController) --- base_controller.rb(扩展ActionControl ler :: Base) --- activities ---- reports_controller.rb(extends BaseController)
我的文件在api/v1/activities/reports_controller.rb级别的基本信息如下所示。
module Api
module V1
class Activities::ReportsController < BaseController
end
end
end
如果我拉了比赛路线resources :activities do
之外,使它看起来像这样:
match 'activities/:activity_id/reports/:action', via: [:get], :controller => "activities/reports", :defaults => { :format => 'pdf' }
它似乎喜欢它......但我不喜欢那怎么布局和它不应该是这样我不认为...
你可能有你的型号名称复数,它需要单数 – 2014-12-10 21:52:16
我不相信就是这样,但我会检查它。 – 2014-12-11 02:33:24
我的一件大事就是为什么环境之间的差异时,它们是相同版本的Ruby和Rails版本...似乎很奇怪我。 – 2014-12-11 02:35:11