gpt4 book ai didi

ruby-on-rails - 为什么将 require 语句放在 ruby​​ 文件的末尾?

转载 作者:太空宇宙 更新时间:2023-11-03 17:42:30 25 4
gpt4 key购买 nike

我在我新继承的 ruby​​/rails 项目中看到了这一点,并且想知道:

module Canonicalizer
# Redirects the client to the canonical url
#
# @return [undefined]
#
# @api private
def redirect_to_canonical_url
if request.get? && !canonical_url?
redirect_to canonical_url, status: :moved_permanently
false
else
true
end
end

# Test if the current request URL is canonical
#
# @return [Boolean]
#
# @api private
def canonical_url?
request.path == canonical_url
end

end

require 'canonicalizer/hub_page_canonical'

最佳答案

Ruby 代码未编译,[主要] 在解析器中进行处理。也就是说,以下两段代码并不等效:

class Foo; def foo; :first; end; end
class Foo; def foo; :second; end; end
Foo.new.foo #⇒ :second

对比

class Foo; def foo; :second; end; end
class Foo; def foo; :first; end; end
Foo.new.foo #⇒ :first

此外,Kernel#require是在 Kernel 模块上定义的常规函数​​。我可以想到 'canonicalizer/hub_page_canonical' 文件依赖于 Canonicalizer 模块(例如,它包含 include Canonicalizer 的类的定义。)对于为了实现这一点,必须预先声明包含的模块,因此 require 出现在其定义之后。

关于ruby-on-rails - 为什么将 require 语句放在 ruby​​ 文件的末尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56739093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com