【问题标题】:Refactoring a large routes.rb file in rails 4在 rails 4 中重构大型 routes.rb 文件
【发布时间】:2013-11-15 20:45:39
【问题描述】:

我正在将 rails 3 应用程序升级到 rails 4.0.1。

在我的 rails 3 应用程序中,我的 application.rb 中有以下代码以使用多个路由文件。

config.paths["config/routes"] += Dir[Rails.root.join('config', 'routes', '*.rb').to_s]

但是当我尝试在 rails 4 中使用相同的东西时会引发异常。

有什么建议吗?

【问题讨论】:

  • 你能在你的问题中发布例外吗?

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4


【解决方案1】:

查看这个 SO 答案:rails 4: split routes.rb into multiple smaller files

看起来这个功能在 Rails 4 中被弃用了。

【讨论】:

  • 感谢参考
【解决方案2】:

在我的一个较大的应用程序中,我在 config/routes.rb 文件中使用以下代码段。

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

YourApplication::Application.routes.draw do
  # Loads config/routes/common.rb
  draw :common
  # Loads config/routes/another.rb
  draw :another
end

Rails 4 最初支持 draw :routeName,但它被删除,因为它没有显示任何改进。 (我不知道 ^.^) 你可以在这里查看 git commit:https://github.com/rails/rails/commit/5e7d6bba79393de0279917f93b82f3b7b176f4b5

【讨论】:

  • 这太棒了。谢谢你的分享。我无法更改 config/routes/x.rb 文件以供自动加载器获取。你有没有为此找到解决方案?
  • 我上次检查时(大约一年前),没有解决方案让这些路由自动加载。只需快速重启 Rails 服务器。
【解决方案3】:

我不知道您的应用程序有多大。但是,如果您需要使用 Rails 路由进行一些适当的重构,您应该查看 rails 4 中的routing concern

Mo' 文件,mo' 问题。

【讨论】:

  • 我通常同意mo files, mo problems 的说法,但是对于我个人开发的应用程序,一个应用程序被分为 4-5 个模块,不同的开发团队在不同的模块上工作。它使为每个模块提供自己的路由文件变得更加简单,然后将公共/所有包含的路由放在主 routes.rb 文件中。
  • 感谢您的提示。不幸的是,我有相当独立的模块,无法重构为关注点。随着应用程序的不断发展,我会牢记这一点。
  • 如果你的应用程序那么大,你可以考虑重构引擎。
  • 如果更多的文件意味着更多的问题你有一个组织问题。
猜你喜欢
  • 2016-06-07
  • 2018-01-03
  • 2013-09-21
  • 2012-03-09
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2017-05-14
  • 2012-03-16
相关资源
最近更新 更多