我正在处理更改控制器中定义的元标记的 rake 任务。我在这里找到了一些帮助,但我仍然遇到错误。当我尝试运行这个 rake 任务时,ruby 不喜欢第 11 行,即以“found =”开头的行。我得到这个错误。
rake aborted!
undefined local variable or method `line' for main:Object
/Users/********/lib/tasks/meta_tags.rake:11:in `block (2 levels) in <top (required)>'
这就是任务的样子。我很困惑为什么“行”在前第一行(10)上被正确解释,但在 11 上却爆炸了。有什么想法吗?
require 'rake'
namespace :meta_tags do
desc 'changes the meta tags'
task :update => :environment do
regex = /^@meta_tag/
found = false
file = File.open('app/controllers/site_controller.rb', 'w')
file.each_line |line|
replace_line(line) if(found)
found = true if(line =~ regex)
end
def replace_line(line)
meta_tags = MetaTag.all.map { |tag| tag["tag"] }
new_tag = meta_tags.sample(1)[0]
line = "@meta_tag = #{new_tag}"
end
end