加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在环境/ * .rb中解析配置符号

发布时间:2020-12-16 19:06:39 所属栏目:百科 来源:网络整理
导读:这是典型的config / environments / * .rb文件的开头方式: MyApp::Application.configure do config.cache_classes = false ...end 传递给配置的块解除引用显然未绑定的符号配置.这在技术上如何工作?块/ Proc / lambda中使用的符号应该在其声明的上下文中
这是典型的config / environments / * .rb文件的开头方式:
MyApp::Application.configure do
  config.cache_classes = false
  ...
end

传递给配置的块解除引用显然未绑定的符号配置.这在技术上如何工作?块/ Proc / lambda中使用的符号应该在其声明的上下文中绑定,而不是在调用站点的动态范围中解析.

一个相关的问题是,Application.configure方法究竟在哪里声明?它不在application.rb,engine.rbrailtie.rb中.也许如果我设法找到这种方法,我会找到我的主要问题的答案.

同样相关,我已经研究了Rails initialization procedure令人难以忍受的细节,我甚至找不到配置/环境/ * .rb文件.如果我知道init程序如何处理这些文件,那可能会对此有所了解.

解决方法

它是在lib / rails / application.rb中的railties gem中的Rails :: Application中的方法配置,它返回在lib / rails / application / configuration.rb中定义的Application :: Configuration实例.

配置方法由自动加载模块Configurable,lib / rails / railtie / configurable贡献给Railtie,并定义为

def configure(&block)
  class_eval(&block)
end

这解释了为什么配置接受的块可以解析配置符号.请注意,class_eval是另一个使用它的rubyist魔法:它将传入块的自我符号重新绑定到调用站点的类.

检查“引导过程”部分中第一个文件中的注释,该部分说明了所有这些优点的来源,方式和顺序,包括如何处理/ config / environments目录.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读