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来解决。

你可能感兴趣的:(Rails4中如何加载多个Routes文件)