我想使用应用程序模板向新创建的Rails应用程序添加文件夹并添加文件(例如我自己的readme.md)。
在template.rb
中require "fileutils"
require "shellwords"
def add_folders
mkdir views/components/buttons
mkdir csv/
end
def add_file
cd csv
touch user.csv
end
def add_readme
rm README.md
touch README.md
inject_into_file("README.md", "New readme..")
end
after_bundle do
add_folder
add_file
add_readme
end
但是我不知道该怎么做。
答案 0 :(得分:1)
FileUtils涵盖了您想要的大部分内容。 mkdir_p
使用命令行mkdir -p
命令,如果目录不存在,则会创建完整路径。
IO.write
(该文件从IO继承)接受文件名和内容。无需删除旧文件并触摸新文件。
此外,您还要确保对文件路径使用Rails.root.join
。它与File.join
类似,因为它可以帮助您构建文件路径,而不会意外使/
翻倍,但是它还会在计算机上返回绝对文件路径。而且,它使您的代码OS不可知,因为UNIX系统使用'/'作为文件夹分隔符,而Windows计算机使用'\'。因此,Rails.root.join
使所有这些事情变得更加安全。
下面是在unix系统上使用它的示例:
如果Rails.root是'/some/cool/path/here'
,那么Rails.root.join('views','components', 'buttons')
将是'/some/cool/path/here/views/components/buttons'
。
require 'fileutils'
require 'shellwords'
def add_folders
FileUtils.mkdir_p(Rails.root.join('views', 'components', 'buttons'))
FileUtils.mkdir_p(Rails.root.join('csv'))
end
def add_file
FileUtils.touch('Rails.root.join('csv', 'user.csv'))
end
def add_readme
File.write(Rails.root.join('README.md'), 'New readme..')
end
after_bundle do
add_folder
add_file
add_readme
end