У меня есть базовая структура для веб-приложения (несколько статических страниц, аутентификация пользователя, базовое тестирование с помощью rpec). Я хотел бы использовать это как основу для будущих веб-приложений. Я назвал свой проект «фреймворк», поэтому, если я его разветвлю, у меня будет около дюжины случаев, когда мне придется заменить термин «фреймворк» на имя нового приложения, которое я создаю. Этот проект называется github.com/bnd5k/framework. Файл README содержит список файлов, в которых мне нужно внести изменения. Я могу внести эти изменения вручную, но я бы предпочел автоматизировать этот процесс. Я полагаю, что проще всего было бы включить файл rake в Framework. Итак, я создал файл rake с именем renamer.rake. Мой файл rake основан на этом сообщении: Как найти в тексте файла шаблон и заменить его заданным значением. Вот что я придумал.
task :rename do
file_names = ['config/environments/test.rb', 'config/environments/production.rb',
'config/environment.rb']
file_names.each do |file_name|
text = File.read(file_name)
puts text.gsub("Framework", "funktrunkgunk")
end
end
Этот код работает, поскольку он заменяет термин «фреймворк» другим термином, но это работает только в консоли. Мне нужно, чтобы на самом деле изменить содержимое файлов. Что мне нужно сделать? Нужно ли открывать каждый файл, а не просто читать его?
К вашему сведению, в этом коде перечислены только несколько файлов (только чтобы я мог проверить, работает ли этот метод), и термин замены в конечном итоге будет переменной, а не «funktrunkgunk». Как только я закончу эту часть, я хотел бы настроить ее так, чтобы любой мог клонировать репозиторий фреймворка на свой компьютер, перейти в каталог фреймворка, запустить сервер rails, а затем перейти на локальный хост в своем браузере, чтобы переименовать файл из там. Я настрою public/index.html как базовую страницу, содержащую поле формы, где пользователь может ввести свое собственное имя для приложения. Как только пользователь нажмет кнопку «Имя приложения», он запустит файл rake. Это звучит осуществимо?
read
, если вы не уверены, что файл поместится в памяти. Построчный ввод-вывод быстрее для больших файлов и масштабируем. stackoverflow.com/a/25189286/128421 - person the Tin Man   schedule 26.11.2014