Rails 5:如何在应用程序模板脚本中添加文件夹和文件

时间:2018-11-12 11:31:54

标签: ruby-on-rails-5

我想使用应用程序模板向新创建的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

但是我不知道该怎么做。

1 个答案:

答案 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