dos*_*123 2 ruby rubygems ruby-on-rails
假设我是一个非常庞大的项目,我很好奇这条线是如何工作的:
authorize! :read_pipeline_schedule, user_project
Run Code Online (Sandbox Code Playgroud)
authorize!应该是方法名称.它是类中的私有函数,还是从父块提供的DSL,包含或在gem中声明的?或者也许没有?
我使用grep来查找内部代码,使用Google来获取外部代码,例如gems,但是我想如果我能看到方法的调用堆栈,它会很有用.puts caller虽然它不能用于分析上述情况,但是从我所在的地方打印.
我想知道最好的做法.
您可以grep您的代码并安装宝石,如果名称足够独特,您将快速找到它的定义和相关的用法.但是,如果名称是常见名称call,那么这种方法就没用了.
Ruby是一种动态语言,因此是静态分析的噩梦.你可能想在那里这从何而来,但你无法知道肯定.
唯一知道的方法是运行时内省.因此,在您的示例中,在该行之前放置一个断点
binding.pry
authorize! :read_pipeline_schedule, user_project
Run Code Online (Sandbox Code Playgroud)
你会辍学pry.现在你可以做到
show-source authorize!
Run Code Online (Sandbox Code Playgroud)
并查看这个方法的确切位置.
| 归档时间: |
|
| 查看次数: |
38 次 |
| 最近记录: |