мерзавец из геройку - PullRequest
4 голосов
/ 18 июля 2011

Я развернул бота у костра на heroku (приложение sinatra, использующее tinder для прослушивания комнаты у костра), и я хотел бы запросить у него git diff между тем, что развернуто в другом приложении heroku, и тем, что находится в нашем репозитории github , Если бы я делал это локально, я бы просто

  1. клон репозитория github
  2. Добавить геройку пульта
  3. Запустите git diff при запросе

Однако на heroku я ограничен только каталогом tmp (на бамбуке) или эфемерной файловой системой (на кедре), а также имею трудности с управлением ключами ssh для пользователя, от имени которого запускается приложение.

Как я могу сделать это на heroku, желательно, чтобы иметь возможность отображать результаты в виде дерева?

Ответы [ 2 ]

2 голосов
/ 18 июля 2011

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

Вторым наиболее простым решением было бы вычисление журнала git в другом месте.Вы можете написать небольшое приложение, похожее на веб-сервис (возможно, с Sinatra), которое принимает два URL репозитория и возвращает их diff.И тогда вы можете запросить это из приложения heroku.Но я полагаю, что это исключено, поскольку вы просите сделать это «на Heroku».

Что приводит нас к последнему решению;это включает создание всего в памяти;исходная папка должна быть создана с чем-то вроде FakeFS , а управление git должно быть сделано из ruby ​​изначально; Вилка Скотта Чакона делала нативные вызовы вместо обстрела, так что это может сработать (я не знаю, были ли изменения Чакона перенесены в основную дробь).Таким образом, весь доступ к файловой системе будет осуществляться из ruby, и все будет в памяти (кстати, вы можете обновить свою память)

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

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

Я надеюсь, что этопомогает.

0 голосов
/ 19 июля 2011

Из службы поддержки Heroku:

jd, 18 июля, 15:18 (PDT): Привет, Бен,

Да, вы можете использовать tmp / для Bamboo или эфемернофайловая система на кедре.Обычно проблема с использованием git для доступа к внешним репозиториям - это закрытый ключ ssh.Вам нужно будет включить это в ваше приложение.Вам также необходимо установить переменную GIT_SSH, чтобы указать git, как использовать этот ключ, например:

GIT_SSH = "ssh -i / app / doc / id_rsa $ @"

A bitэкспериментирования, и вы должны быть в состоянии заставить его работать.

Крюки после развертывания также могут быть полезны: http://devcenter.heroku.com/articles/deploy-hooks

Удачи!

Приветствия,JD

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