Rails4中如何加载多个Routes文件

问题场景

随着项目越来越庞大,路有文件的维护已经为了一个挺麻烦的问题。
Rails4在早期的版本中也提供了相关的解决方案但是后来退了回去……
我这里介绍一下,我们大概是怎么做的monkey patch。

解决方案

首先在原先/config/routes.rb文件中增加一个draw方案

  def draw(routes_name)
    instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb")))
  end

这个方法比较简单其实就是使用instance_eval加载外部的routes文件。
并且路径是config/routes ,文件名即传入参数。

然后,我们就建立一个后台管理用的routes文件,config/routes/admin.rb

App::Application.routes.draw do
    #########
    # 管理员模块
    #######
    namespace :admin do
      root 'home#index'
    end
end

最后在config/routes.rb中使用draw方法去加载一下admin的路由文件即可

App::Application.routes.draw do
  def draw(routes_name)
    instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb")))
  end
  draw :admin
end

写在最后

这是一种适合于小项目,有强迫症处女座的解决方案,如果当项目无论在路由还是在控制层面都需要分离的话,可以考虑使用Rails Engine来解决。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容