从完整的rails引擎中的lib文件夹加载路由

时间:2012-02-14 13:03:53

标签: ruby-on-rails-3 routes rails-routing

我制作了一个完整的引擎并将一些插件转换为与引擎一起工作(我将它们放在lib /中)并将它们加载到初始化引擎中.rb

这是结构:

  • 应用
    • 配置
      • 的routes.rb
  • LIB
    • 插件
      • 配置
        • 的routes.rb

在app / config / routes.rb的路由中我有:

Rails.application.routes.draw do
  match 'help', :to => 'help#index', :as => 'help'
  match 'login', :to => 'sessions#new', :as => 'login'
  match 'logout', :to => 'sessions#destroy', :as => 'logout'
  match 'loadtest', :to => 'loadtests#index', :as => 'loadtest'
end

在(lib / plugin / config / routes.rb)的第二个routes.rb文件中我有这个:

Rails.application.routes.draw do
   match '/mailchimp/callback', :to => 'mailchimp#callback', :as => 'mailchimp_unsubscribe'
end

在我的engine.rb中的config / initializers /我把:

require "#{File.dirname(__FILE__)}/../../lib/plugin/config/routes"

现在,当我运行rake app:routes时,我将其作为输出:

    help  /help(.:format)     help#index
   login  /login(.:format)    sessions#new
  logout  /logout(.:format)   sessions#destroy
loadtest  /loadtest(.:format) loadtests#index

如何将插件中的路由添加到引擎路由?

2 个答案:

答案 0 :(得分:1)

编辑config / application.rb并添加以下行:

config.paths["config/routes"] << Rails.root.join('lib/plugin/config/routes.rb')

它应该有用。

答案 1 :(得分:0)

将代码放在application.rb

在lib / routes中加载所有* .rb

for rout in Dir[Rails.root.join('lib','routes', '*.{rb,yml}').to_s]
config.paths["config/routes"] << rout
end