Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
4a9eeb7f
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4a9eeb7f
编写于
5月 13, 2019
作者:
X
Xavier Noria
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
warn about non-eager loaded dirs in zeitwerk:check
上级
a756d2fa
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
53 addition
and
19 deletion
+53
-19
railties/lib/rails/tasks/zeitwerk.rake
railties/lib/rails/tasks/zeitwerk.rake
+53
-19
未找到文件。
railties/lib/rails/tasks/zeitwerk.rake
浏览文件 @
4a9eeb7f
# frozen_string_literal: true
indent
=
" "
*
2
ensure_classic_mode
=
->
()
do
if
Rails
.
autoloaders
.
zeitwerk_enabled?
abort
<<~
EOS
...
...
@@ -17,8 +19,7 @@ eager_load = ->() do
Rails
.
configuration
.
eager_load_namespaces
.
each
(
&
:eager_load!
)
end
mismatches
=
[]
check_directory
=
->
(
directory
,
parent
)
do
check_directory
=
->
(
directory
,
parent
,
mismatches
)
do
# test/mailers/previews might not exist.
return
unless
File
.
exists?
(
directory
)
...
...
@@ -33,7 +34,7 @@ check_directory = ->(directory, parent) do
cname
=
File
.
basename
(
abspath
,
".rb"
).
camelize
.
to_sym
if
parent
.
const_defined?
(
cname
,
false
)
if
File
.
directory?
(
abspath
)
check_directory
[
abspath
,
parent
.
const_get
(
cname
)]
check_directory
[
abspath
,
parent
.
const_get
(
cname
)
,
mismatches
]
end
else
mismatches
<<
[
abspath
,
parent
,
cname
]
...
...
@@ -42,22 +43,47 @@ check_directory = ->(directory, parent) do
end
end
report
=
->
()
do
report_mismatches
=
->
(
mismatches
)
do
puts
rails_root_prefix_re
=
%r{
\A
#{
Regexp
.
escape
(
Rails
.
root
.
to_path
)
}
/}
mismatches
.
each
do
|
abspath
,
parent
,
cname
|
relpath
=
abspath
.
sub
(
rails_root_prefix_re
,
""
)
cpath
=
parent
==
Object
?
cname
:
"
#{
parent
.
name
}
::
#{
cname
}
"
puts
indent
+
"Mismatch: Expected
#{
relpath
}
to define
#{
cpath
}
"
end
puts
puts
<<~
EOS
Please revise the reported mismatches. You can normally fix them by adding
acronyms to config/initializers/inflections.rb or renaming the constants.
EOS
end
report_not_checked
=
->
(
not_checked
)
do
puts
puts
<<~
EOS
WARNING: The files in these directories cannot be checked because they
are not eager loaded:
EOS
puts
not_checked
.
each
{
|
dir
|
puts
indent
+
dir
}
puts
puts
<<~
EOS
You may verify them manually, or add them to config.eager_load_paths
in config/application.rb and run zeitwerk:check again.
EOS
end
report
=
->
(
mismatches
,
not_checked
)
do
puts
if
mismatches
.
empty?
if
mismatches
.
empty?
&&
not_checked
.
empty?
puts
"All is good!"
puts
"Please, remember to delete `config.autoloader = :classic` from config/application.rb."
else
mismatches
.
each
do
|
abspath
,
parent
,
cname
|
relpath
=
abspath
.
sub
(
%r{
\A
#{
Regexp
.
escape
(
Rails
.
root
.
to_path
)
}
/}
,
""
)
cpath
=
parent
==
Object
?
cname
:
"
#{
parent
.
name
}
::
#{
cname
}
"
puts
"expected
#{
relpath
}
to define
#{
cpath
}
"
end
puts
puts
<<~
EOS
Please revise the reported mismatches. You can normally fix them by adding
acronyms to config/initializers/inflections.rb or renaming the constants.
EOS
report_mismatches
[
mismatches
]
if
mismatches
.
any?
report_not_checked
[
not_checked
]
if
not_checked
.
any?
end
end
...
...
@@ -67,12 +93,20 @@ namespace :zeitwerk do
ensure_classic_mode
[]
eager_load
[]
eager_load_paths
=
Rails
.
configuration
.
eager_load_namespaces
.
map
do
|
eln
|
eln
.
config
.
eager_load_paths
if
eln
.
respond_to?
(
:config
)
end
.
compact
.
flatten
mismatches
=
[]
$stdout
.
sync
=
true
ActiveSupport
::
Dependencies
.
autoload_paths
.
each
do
|
auto
load_path
|
check_directory
[
autoload_path
,
Object
]
eager_load_paths
.
each
do
|
eager_
load_path
|
check_directory
[
eager_load_path
,
Object
,
mismatches
]
end
puts
report
[]
not_checked
=
ActiveSupport
::
Dependencies
.
autoload_paths
-
eager_load_paths
not_checked
.
select!
{
|
dir
|
Dir
.
exist?
(
dir
)
}
not_checked
.
reject!
{
|
dir
|
Dir
.
empty?
(
dir
)
}
report
[
mismatches
,
not_checked
]
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录