私は、これを動作させるためにいくつかのカピストラノの方法を無効にすることができました。私は私のCapfile
の先頭に次のコードを書いた:
module Capistrano
module DSL
module Stages
def stages
names = Dir[stage_definitions].map { |f| "#{File.dirname(f)}/#{File.basename(f, ".rb")}".gsub("#{stage_config_path.to_s}/", '') }
assert_valid_stage_names(names)
names
end
# Override stage_definitions to include subfolders
def stage_definitions
stage_config_path.join("**/*.rb")
end
end
end
end
説明
#stage_definitions
メソッドをオーバーライドすることで、私はそれは、サブディレクトリ内の.rb
ファイルを探すということに**/
を追加しました。私は、フォルダ名を含めるstage
を必要とする意味
load stage_config_path.join("#{stage}.rb")
:
次の問題は、capistrano/setup.rb
は、このコード行を持っていたことでした。次に、#stages
を上書きして、names
という変数がサブディレクトリを含むステージの配列になるようにしました。例:
config/
├── deploy/
│ ├── group_1/
| ├── ├── stage1.rb
│ ├── stage2.rb
│ ├── stage3.rb
は次のようになります。
のRakeタスクが作成され、正しくファイルをロードすることができます
['group_1/stage1', 'stage2', 'stage3']
!
$ cap group_1/stage1 deploy