Rails 5: Как добавить папки и файлы в шаблон скрипта приложения - PullRequest
0 голосов
/ 12 ноября 2018

Я хотел бы добавить папки и файлы (например, мой собственный readme.md) во вновь созданные приложения rails, используя шаблоны приложений.

В 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 голосов
/ 12 ноября 2018

FileUtils покрывает большую часть того, что вы хотите. mkdir_p использует команду mkdir -p командной строки, которая задает полный путь, если каталоги не существуют.

IO.write (который File наследует от IO) принимает имя файла и его содержимое. Не нужно удалять старый файл и трогать новый.

Кроме того, вы должны убедиться, что вы используете Rails.root.join с вашими путями к файлам. Это похоже на File.join, в том, что оно помогает вам создать путь к файлу, не удваивая ваш / в случае аварии, но также возвращает абсолютный путь к файлу на вашем компьютере. Кроме того, это делает ваш код независимым от ОС, потому что в то время как системы 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...