我正在使用ruby 2.4和rails 5.
我正在尝试编写我的第一个gem并设置一个引擎来安装一些基本的控制器逻辑。
我有以下作为我的引擎:
Foo::Bar::Mylib::Engine.routes.draw do
resources :controller
end
我的包结构是我在下面显示的,我在spec文件夹中放置了一个虚拟应用程序。
mylib
|- app
|- controllers
|- concerns
|- foo
|- bar
|- mylib
|- controller.rb
|- bin
| *.*
|- config
|- locales
|- *.yml
|- routes.rb
|- lib
|- foo
|- bar
|- mylib
|- engine.rb
|- version.rb
|- mylib.rb
| spec
|- contollers
|- mycontroller_spec.rb
|- dummy
|- *.* (other helper and spec related files)
对于虚拟应用程序,我包括了我的担忧:
include Foo::Bar::Mylib::Controller
我已将引擎安装在routes.rb中:
Rails.application.routes.draw do
mount Foo::Bar::Mylib::Engine => '/my/route'
end
我似乎在某些方面存在逻辑差距,因为我可以看到它的安装位置:
controller_index GET /controller(.:format) controller#index
POST /controller(.:format) controller#create
new_controller GET /controller/new(.:format) controller#new
edit_controller GET /controller/:id/edit(.:format) controller#edit
controller GET /controller/:id(.:format) controller#show
PATCH /controller/:id(.:format) controller#update
PUT /controller/:id(.:format) controller#update
DELETE /controller/:id(.:format) controller#destroy
但我只想为一个控制器操作添加路由。我的rspecs显示:
Failure/Error: get '/my/route'
ActionController::UrlGenerationError:
No route matches {:action=>"/my/route", :controller=>"my/route"}
当我的规范看起来像是:
get '/my/route'
有人介意提供一些指导吗?