Определить, какие файлы git изменились с помощью Ruby? - PullRequest
0 голосов
/ 11 октября 2010

У меня есть приложение Rails с записями в блоге, которые я хочу обновить из отдельного репозитория Blog.git.

Я предполагаю, что мой рабочий процесс выглядит примерно так:

  1. Записьновая запись в блоге
  2. Push для удаленного репозитория Git
  3. Call cap deploy: обновление, которое вызовет задачу Rake для обновления базы данных с любыми измененными или новыми записями

Здесь загвоздка заключается в поиске файлов, которые были изменены.Я хотел бы использовать Git для этого, и я знаю, что мог бы сделать несколько сценариев awk или Perl для git diff.

Но есть ли лучший способ?Я кратко посмотрел на Грит, но не могу найти хорошее решение.

Обновление : Оказывается, Грит - лучшее решение этой проблемы, по крайней мере, насколько я могу судить,Вот что я использовал для решения проблемы:

desc 'Posts all entries to database'
task :post_all do
  Dir.chdir REPO do
    Grit::Repo.new('.').tree.contents.each do |file|
      # post_entry cleans up my blog entries and posts them via Post.create()
      post_entry(file.data, :text) unless file.basename =~ /\.gitignore/
    end
  end
end

desc 'Posts all new or changed entries to database'
task :post_new do
  Dir.chdir REPO do
    Grit::Repo.new('.').head.commit.diffs.each do |diff|
      post_entry diff.b_blob.data, :text
    end
  end
end

desc 'Deletes entries from database'
task :remove_all do
  Post.destroy_all
end

desc 'Synchronizes the remote blog repo and the database'
task :sync => [ :remove_all, :post_all ]

1 Ответ

2 голосов
/ 11 октября 2010

база данных действительно необходима? проверьте драгоценный камень Джекила. его используют сотни (если не тысячи) простых блогов, в том числе два моих.

http://github.com/mojombo/jekyll

в противном случае, песок - это хорошее решение. Я использовал его для нескольких вещей, и он хорошо работает.

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