Развертывание подкаталога Мерзавца в Capistrano

Вот несколько улучшенная версия структурной директивы Ильяса Ламрани, которая позволяет вам использовать индекс в вашем шаблоне:

@Directive({
  selector: '[appRepeatOf]'
})
export class RepeatDirective {

  constructor(private templateRef: TemplateRef<any>,
              private viewContainer: ViewContainerRef) {
  }

  @Input()
  set appRepeatOf(times: number) {
    const initialLength = this.viewContainer.length;
    const diff = times - initialLength;

    if (diff > 0) {
      for (let i = initialLength; i < initialLength + diff; i++) {
        this.viewContainer.createEmbeddedView(this.templateRef, {
          $implicit: i
        });
      }
    } else {
      for (let i = initialLength - 1; i >= initialLength + diff ; i--) {
      this.viewContainer.remove(i);
    }
  }

}

Использование:

<li *appRepeat="let i of myNumberProperty">
    Index: {{i}}
</li>
65
задан Charles Menguy 25 April 2012 в 23:51
поделиться

5 ответов

без каких-либо грязных раздумчивых действий, а даже грязнее!

В моем конфиге / deploy.rb:

set :deploy_subdir, "project/subdir"

Тогда я добавил эту новую стратегию на мой Capfile:

require 'capistrano/recipes/deploy/strategy/remote_cache'

class RemoteCacheSubdir < Capistrano::Deploy::Strategy::RemoteCache

  private

  def repository_cache_subdir
    if configuration[:deploy_subdir] then
      File.join(repository_cache, configuration[:deploy_subdir])
    else
      repository_cache
    end
  end

  def copy_repository_cache
    logger.trace "copying the cached version to #{configuration[:release_path]}"
    if copy_exclude.empty? 
      run "cp -RPp #{repository_cache_subdir} #{configuration[:release_path]} && #{mark}"
    else
      exclusions = copy_exclude.map { |e| "--exclude=\"#{e}\"" }.join(' ')
      run "rsync -lrpt #{exclusions} #{repository_cache_subdir}/* #{configuration[:release_path]} && #{mark}"
    end
  end

end


set :strategy, RemoteCacheSubdir.new(self)
77
ответ дан 24 November 2019 в 15:22
поделиться

Вы можете иметь два репозитория мерзавца (клиент и сервер) и добавить их к "суперпроекту" (приложение). В этом "суперпроекте" можно добавить эти два репозитория как подмодули (проверка это учебное руководство ).

Другое (немного более грязное) возможное решение состоит в том, чтобы иметь отдельные ответвления для клиента и сервера, и затем можно вытянуть от ответвления 'сервера'.

3
ответ дан Sammy Larbi 24 November 2019 в 15:22
поделиться

К сожалению, мерзавец не обеспечивает способа сделать это. Вместо этого 'мерзавец путь' состоит в том, чтобы иметь два репозитория - клиент и сервер и клонировать один (s), Вам нужно.

1
ответ дан Silas Snider 24 November 2019 в 15:22
поделиться

Решение есть. Скачайте патч crdlo для capistrano и capistrano source с github. Удалите существующий гем capistrano, примените патч, установите setup.rb, а затем вы можете использовать его очень простую строку конфигурации set: project, "mysubdirectory" для установки подкаталога.

Единственная проблема - что очевидно github не "поддерживает команду архивирования" ... по крайней мере, когда он ее написал. Я использую свой собственный репозиторий git поверх svn, и он работает нормально, я не пробовал его с github, но думаю, если достаточно людей будет жаловаться, они добавят эту функцию.

Также посмотрите, сможете ли вы заставить авторов capistrano добавьте эту функцию в шапку при соответствующей ошибке .

2
ответ дан 24 November 2019 в 15:22
поделиться

Looks like it's also not working with codebasehq.com so I ended up making capistrano tasks that cleans the mess :-) Maybe there's actually a less hacky way of doing this by overriding some capistrano tasks...

0
ответ дан 24 November 2019 в 15:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: