最近在升级 Rails4,由于项目中用了很多个路由文件,暂列为以下几个:
config/routes.rb
config/routes/admin.rb
config/routes/books.rb
....
在 Rails3,只需配置如下:
config.paths['config/routes'] += %w{admin books}.map{|path| Rails.root.join("config/routes/#{path}.rb")}
然而在升级之后,启动 rails server, 发现报错了:
这个哥们 config.paths['config/routes'] 为 nil,不能使用 '+='了
开始还以为升级 Rails4 之后,配置方法发生了变化,但是 查看官方的升级文档,没有提及;
initializer :add_routing_paths do |app|
paths = self.paths["config/routes.rb"].existent
if routes? || paths.any?
app.routes_reloader.paths.unshift(*paths)
app.routes_reloader.route_sets << routes
end
end
确实从 Rails3 中 的 paths = self.paths["config/routes"].existent 变成了 paths = self.paths["config/routes.rb"].existent
为什么 会如有如此改变,还是它就是一个 bug?