特定のページのメタ タグを変更するレーキ タスクに取り組んでいます。これらのタグはコントローラーで定義されます。rake タスクは、コントローラー ファイルを開き、"@meta_tag" という語句を含む行を見つけて、replace_line(line) メソッドに従ってその行を書き直すことを目的としています。rake タスクを実行すると、エラーは発生しませんが、変更も行われません。
私の問題は「r +」行にあると思います。ファイルを 1 行で開き、別のコード行で書き込む必要がありますか?
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', 'r+')
file.each_line do |line|
replace_line(line) if(found)
found = true if(line =~ regex)
end
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
私が間違っていることを見たら、私に知らせてください。