Ruby on rails 使用rails模板将行插入到文件中
我正在尝试创建一个rails模板,将代码添加到特定行号的文件中。例如,我需要在config/routes.rb中添加一条路由 我试过sed,gsed(只是因为我在mac上,他们说sed在插入和附加方面有问题),总之,我没能达到我想要的结果 在此方面的任何帮助都将不胜感激 我已经尝试了这个命令的几种排列方式,但都不起作用,下面是一个例子Ruby on rails 使用rails模板将行插入到文件中,ruby-on-rails,ruby,templates,sed,Ruby On Rails,Ruby,Templates,Sed,我正在尝试创建一个rails模板,将代码添加到特定行号的文件中。例如,我需要在config/routes.rb中添加一条路由 我试过sed,gsed(只是因为我在mac上,他们说sed在插入和附加方面有问题),总之,我没能达到我想要的结果 在此方面的任何帮助都将不胜感激 我已经尝试了这个命令的几种排列方式,但都不起作用,下面是一个例子 run "gsed '3 a/This is it' config/routes.rb" 也许还有另一个建议 编辑: 好的,我休息了一下,当我回来的时候,在阅读
run "gsed '3 a/This is it' config/routes.rb"
也许还有另一个建议
编辑:
好的,我休息了一下,当我回来的时候,在阅读了sed之后,我意识到我需要将流写回文件,但我以前是用
run "gsed '2 a\
Add this line after 2nd line
' config/routes.rb > config/routes.rb"
但是routes文件是空的,所以我尝试使用不同的文件名(new.routes.rb)
这很有效,所以我知道现在该怎么办。我想知道为什么要使用sed来实现这一点。编写一个Ruby脚本打开文件,逐行读取,进行更改,然后将文件写回。唯一的问题是“就地”编辑一个文件。要解决这个问题,请打开一个文件,写入该文件,然后使用file.move将该文件移到旧文件上。这样就可以了,只需记住删除旧文件并在其位置重命名新文件
run "gsed '2 a\
Add this line after 2nd line
' config/routes.rb > config/new.routes.rb"
因为行号随着文件的发展而变化,所以最好在现有字符串表达式之前或之后插入新代码。在模板生成器中,您可以执行以下操作:
inject_into_file 'config/application.rb', :before => " end" do
"\n config.logger = Logger.new(config.paths.log.first, 50, 1048576)\n\n"
end
注意,您可以使用:after if:before不能满足您的需要。您希望支持哪一版本的rails?当您尝试
sed'3 a\This is it'config/routes.rb时会发生什么?什么都没有发生,我认为运行模板的路径不正确,有人知道rails模板文件是否在rails\u根目录中执行,如果不是,我想我知道该怎么做,但我不确定如何找出路径。+1这本质上是rails本身在生成资源时添加路由的功能。这可以通过rails模板完成吗?请理解,我是ruby on rails世界的新手,只是想游到这个ruby小岛上,没有船。谢谢你的信息,更聪明的解决方案
inject_into_file 'config/application.rb', :before => " end" do
"\n config.logger = Logger.new(config.paths.log.first, 50, 1048576)\n\n"
end