【问题标题】:Load routes from lib folder in full rails engine在完整的 Rails 引擎中从 lib 文件夹加载路由
【发布时间】:2012-02-14 13:03:53
【问题描述】:

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

这是结构:

  • 应用程序
    • 配置
      • routes.rb
  • 库
    • 插件
      • 配置
        • 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

在我的 config/initializers/ 中的 engine.rb 中,我放了:

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

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

【问题讨论】:

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


    【解决方案1】:

    编辑 config/application.rb 并添加这一行:

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

    它应该可以工作。

    【讨论】:

      【解决方案2】:

      把代码放到application.rb中

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

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

      【讨论】:

        猜你喜欢
        • 2014-08-03
        • 2016-09-19
        • 1970-01-01
        • 1970-01-01
        • 2011-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多