我对rake路由的理解是它引导Rails应用程序,然后从中拉出路由。如果我想简单地查看文本(没有加载rails应用程序)并且能够输出类似于rake路由输出的内容,我该怎么做?我知道rake路由实际上运行Ruby代码,我担心这样做,因为我不相信这些应用程序。
我厌倦了加载Rails应用程序,因为我不相信这些Rails应用程序,但如果有办法沙箱运行rake路由或某些相关方法,我也会对此持开放态度。
答案 0 :(得分:0)
如果你有一个包含大量引擎的复杂路由文件,那么使用Vagrant在沙盒中运行应用程序可能会更好。如果它很简单,这个方法可能适合你。
Rails将在没有底层应用程序的情况下从routes.rb生成路由。创建一个新的虚拟应用程序,确保您将rails版本与要检查的应用程序版本相匹配。
> rails new dummy_app
…
> cd dummy_app
> cp /path/to/untrusted/app/config/routes.rb ./config/
编辑路径文件顶部的应用名称以匹配虚拟应用的名称,在这种情况下,它将是DummyApp.Application.routes.draw do
。然后运行
> rake routes
一些警告:如果有任何引擎或宝石特定路线,你需要将它们添加到Gemfile或注释掉那些路线。例如,如果pap使用active_admin,您需要将其添加到gemfile以及生成AdminUser类。然后,当发生器将行添加到路径文件时,您将要重新复制路径文件。如果您遇到未初始化内容的问题,您可能需要初始化程序才能要求某些类。例如,如果您安装Resque :: Server,则需要具有以下两行的初始化程序:
# config/initializers/dummy_init.rb
require 'resque'
require 'resque/server'