:environment
等Rake任务在哪里定义?是否有比:environment
更轻的东西可以让我从Rake任务中访问ActiveRecord子类?
我正在尝试在Rake任务中获取模型列表。这就是我所拥有的:
namespace :mine do
namespace :ar do
desc "my custom"
task :show_sub => [:environment] do
puts "Total:#{ActiveRecord::Base.descendants}"
ActiveRecord::Base.descendants.each do |cls|
puts cls
end
end
end
end
然而,我得到的只是[]
,虽然我定义了3个模型。
编辑:我正在使用Rails 3.1。
答案 0 :(得分:1)
我能想象到的最轻量级的方法是编写rake任务,遍历当前目录中的所有.rb
文件和项目中的子目录(如果你把它们藏在某个奇怪的地方) ),并简单地输出包含字符串< ActiveRecord::Base
的文件数(当然,空格是可选的)。
与此匹配的一个正则表达式模式是:
^class\s[a-zA-Z0-9_]+\s?<\s?ActiveRecord::Base
...所以它只匹配包含显式类声明的行,它不以散列#
标记开头(即所以它不是注释)