Есть ли какой-нибудь пакет * после * хука? - PullRequest
3 голосов
/ 24 мая 2011

Я бы хотел, чтобы ctags генерировал TAGS-файл из всех моих драгоценных камней, входящих в комплект, или все драгоценные камни в каталоге rvm gemset установили свои драгоценные камни.В идеале, установка пакета или обновление пакета должны генерировать файл TAGS на последнем шаге, используя скрипт ruby, который я предоставлю.После этого emacs joy.

Есть ли какой-нибудь пакет после хука, который я могу использовать?

Ответы [ 3 ]

1 голос
/ 26 января 2015

Согласно https://github.com/bundler/bundler/blob/dd1e11d8f8e869ffab4fc68d4854b27e1f486de4/lib/bundler/source/path.rb, существует возможность запуска ловушек 'post_install'.Он использует метапрограммирование для определения имени метода, и гем должен реализовать этот метод.Постараюсь проверить, работает ли это

1 голос
/ 24 мая 2011

Вы можете посмотреть, что Тим Поуп делает в своем проекте Hookup:

https://github.com/tpope/hookup

Я полагаю, что после выполнения компоновщика не составит труда сделать дополнительный шаг.

Лично у меня просто есть старый добрый Makefile в моем проекте Ruby:

.PHONY: tags

tags:
    ETAGS=ctags
    rm -rf TAGS
    ctags -a -e -f TAGS --tag-relative -R app lib vendor

У меня есть скрипт оболочки, который я запускаю утром, который настраивает мою среду разработки, которая также запускается make tags.

0 голосов
/ 14 августа 2011

Мой подход был двухсторонним:

1) Поместите на грабли задачу, которая генерирует теги для всего кода в проекте, а также для всех необходимых гемов:

desc 'Create ctags'
task :tags do
  system "ctags -R --language-force=ruby app config lib `rvm gemdir`/gems"
end

2) Использование отличного самоцвета "бригадир" (который я использовал в любом случае) для запуска inotifywait и запуска задачи rake, если файл изменяется:

tags: while inotifywait -q -r -e MODIFY --exclude swp$ app/ config/ lib/ ; do bundle exec rake tags; done

Если вы не используете foreman, вы, конечно, можете просто запустить эту строку без первой части "tags:" вручную в оболочке.

...