вставить строку в файл, используя шаблоны rails - PullRequest
4 голосов
/ 14 сентября 2010

Я пытаюсь создать шаблон rails, который будет добавлять код в файлы с определенными номерами строк. Например мне нужно добавить маршрут в config / rout.rb

Я пробовал sed, gsed (только потому, что я на Mac и говорят, что у sed проблемы с вставкой и добавлением), так или иначе, я не смог достичь желаемого результата.

Любая помощь по этому вопросу будет принята с благодарностью.

Я пробовал несколько перестановок этой команды, но ни одна из них не работает, вот пример

run "gsed '3 a/This is it' config/routes.rb"

возможно, даже другое предложение

EDIT ::::::

хорошо, я взял перерыв, и когда я вернулся, прочитав sed, я понял, что мне нужно записать поток обратно в файл, но я делал это раньше с

run  "gsed '2 a\
Add this line after 2nd line
' config/routes.rb > config/routes.rb"

но файл маршрутов будет пустым, поэтому я попытался использовать другое имя файла (new.routes.rb),

run  "gsed '2 a\
Add this line after 2nd line
' config/routes.rb > config/new.routes.rb"

и это сработало, так что теперь я знаю, что делать.

Ответы [ 3 ]

16 голосов
/ 14 ноября 2010

Поскольку номера строк меняются по мере развития вашего файла, лучше вставить новый код до или после существующих строковых выражений.Внутри вашего генератора шаблонов вы можете сделать что-то вроде этого:

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 не соответствует вашим потребностям.

0 голосов
/ 15 сентября 2010

это сделает свое дело, просто не забудьте удалить старую и переименовать новую на ее месте

run  "gsed '2 a\
Add this line after 2nd line
' config/routes.rb > config/new.routes.rb"
0 голосов
/ 15 сентября 2010

Мне интересно, почему вы используете sed для этого.Напишите скрипт Ruby, чтобы открыть файл, прочитайте его построчно, внесите изменения и запишите файл обратно.Единственная проблема, с которой вы столкнетесь - это редактирование файла "на месте".Чтобы обойти это, откройте временный файл , запишите этот файл, затем переместите этот файл поверх старого файла, используя File.move.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...