问题场景
随着项目越来越庞大,路有文件的维护已经为了一个挺麻烦的问题。
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来解决。