我正在将Rails 2.3应用程序升级到3.2 - 这样做,我曾经依赖ResourceController
的其中一个插件在Rails 3中不再可用(至少不是一个好的端口我发现了)。因此,我不得不寻找其他选项,我尝试过的每个宝石rc_rails和rd_resource_controller以及inherited_resources都会导致同样的错误:
Routing Error uninitialized constant [ResourceController|InheritedResources]
。
他们肯定在我的gemlock中,我重新启动了服务器测试它们。几乎看起来好像没有安装宝石,因为发生了这样的错误。
以下是resources :projects
的路线:
projects GET /projects(.:format) projects#index
POST /projects(.:format) projects#create
new_project GET /projects/new(.:format) projects#new
edit_project GET /projects/:id/edit(.:format) projects#edit
project GET /projects/:id(.:format) projects#show
PUT /projects/:id(.:format) projects#update
DELETE /projects/:id(.:format) projects#destroy
这是控制器:
class ProjectsController < ResourceController::Base
#....
end
## OR
class ProjectsController < InheritedResources::Base
## ....
end
所有这些都导致未初始化的常数:
Routing Error
uninitialized constant InheritedResources
以下是继承资源的回溯:
Started GET "/projects/3903/edit" for 127.0.0.1 at 2014-01-30 10:17:55 -0600
ActionController::RoutingError (uninitialized constant InheritedResources):
app/controllers/projects_controller.rb:3:in `<top (required)>'
activesupport (3.2.16) lib/active_support/inflector/methods.rb:230:in `block in constantize'
activesupport (3.2.16) lib/active_support/inflector/methods.rb:229:in `each'
activesupport (3.2.16) lib/active_support/inflector/methods.rb:229:in `constantize'
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:69:in `controller_reference'
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:54:in `controller'
actionpack (3.2.16) lib/action_dispatch/routing/route_set.rb:32: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.16) lib/action_dispatch/routing/route_set.rb:608:in `call'
actionpack (3.2.16) 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.16) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.16) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.16) 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.16) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.16) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.16) lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'
actionpack (3.2.16) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (3.2.16) lib/active_support/callbacks.rb:405:in `_run__542093477292722009__call__814078438384904527__callbacks'
activesupport (3.2.16) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.16) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
activesupport (3.2.16) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.16) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.16) lib/action_dispatch/middleware/reloader.rb:65:in `call'
actionpack (3.2.16) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.16) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.16) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.16) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.16) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.16) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.16) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.16) 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.16) 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.16) lib/action_dispatch/middleware/static.rb:63:in `call'
railties (3.2.16) lib/rails/engine.rb:484:in `call'
railties (3.2.16) lib/rails/application.rb:231:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
railties (3.2.16) lib/rails/rack/debugger.rb:20:in `call'
railties (3.2.16) lib/rails/rack/log_tailer.rb:17:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
/Users/myself/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/Users/myself/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/Users/myself/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
Rendered /Users/myself/.rvm/gems/ruby-1.9.3-p448@myapp/gems/actionpack-3.2.16/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (0.6ms)
这是继承的Gemfile和Gemfile.lock:
[myself]:myapp(upgrade/rails-3.2)$ cat Gemfile | grep inherited
gem 'inherited_resources'
[myself]:myapp(upgrade/rails-3.2)$ cat Gemfile.lock | grep inherited
inherited_resources (1.4.1)
inherited_resources
bundle show inherited_resources
:
/Users/myself/.rvm/gems/ruby-1.9.3-p448@production/gems/inherited_resources-1.4.1
为什么这些不可用?