解决方法
Rails的脚手架发生器在向config / routes.rb添加路由时执行此操作通过调用一个非常简单的方法来实现:
def gsub_file(relative_destination,regexp,*args,&block) path = destination_path(relative_destination) content = File.read(path).gsub(regexp,&block) File.open(path,'wb') { |file| file.write(content) } end
它正在做的是将路径/文件作为第一个参数,其次是regexp模式,gsub参数和块.这是一种受保护的方法,您必须重新创建才能使用.我不知道destination_path是否可以访问,所以您可能想要传递确切的路径并跳过任何转换.
要使用gsub_file,假设您要向用户模型添加标签.你可以这样做:
line = "class User < ActiveRecord::Base" gsub_file 'app/models/user.rb',/(#{Regexp.escape(line)})/mi do |match| "#{match}\n has_many :tags\n" end