gpt4 book ai didi

ruby-on-rails - 使用 rails 生成器修改文件

转载 作者:行者123 更新时间:2023-12-04 00:51:20 30 4
gpt4 key购买 nike

你如何制作一个改变文件的生成器。

我试图让它在文件中找到一个模式并将内容添加到它下面的行中。

最佳答案

Rails 的脚手架生成器在添加到 config/routes.rb 的路由时会这样做。它通过调用一个非常简单的方法来做到这一点:

def gsub_file(relative_destination, regexp, *args, &block)
path = destination_path(relative_destination)
content = File.read(path).gsub(regexp, *args, &block)
File.open(path, 'wb') { |file| file.write(content) }
end

它所做的是将路径/文件作为第一个参数,然后是正则表达式模式、gsub 参数和块。这是一种 protected 方法,您必须重新创建才能使用。我不确定 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

您正在文件中找到特定行,类开启器,并添加您的 has_many线正下方。

不过要小心,因为这是添加内容的最脆弱的方式,这就是为什么路由是唯一使用它的地方之一。上面的示例通常会使用混合处理。

关于ruby-on-rails - 使用 rails 生成器修改文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2088480/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com