2

MacVimを使用してChefクックブックを編集していますが、gf(ファイルに移動)コマンドで同じクックブック内の他のChefレシピを開くことができます。

ソリューションが他のChefクックブックでもレシピを開くことができる場合は、超追加ボーナスポイント。

したがって、次のようなディレクトリ構造が与えられます。

1. cookbooks/mycookbook/recipes/default.rb
2. cookbooks/mycookbook/recipes/foo.rb
3. cookbooks/mycookbook/recipes/bar.rb
4. cookbooks/apache2/recipes/default.rb
5. cookbooks/apache2/recipes/mod-ssl.rb

そしてmycookbook/recipes/default.rbこれが含まれています:

include_recipe 'mycookbook::foo'
include_recipe 'mycookbook::bar'
include_recipe 'apache2'
include_recipe 'apache2::mod_ssl'

gfVimのコマンドで上記のレシピを開くことができるようにしたいと思います。

アプローチ:

path基本的に、現在のRubyファイルの親ディレクトリ構造がのような場合は、Rubyファイルにsetlocalを使用して変数を設定することを考えていますがcookbooks/<cookbook name>/recipes/、その方法がわかりません。

path簡単な解決策として、現在のファイルの親パスがであった場合は、現在のファイルの親ディレクトリ(レシピ)を追加するだけで済みますcookbooks/<cookbook name>/recipes/

cookbooks/<all cookbooks>/recipes/より包括的なソリューションの場合は、path変数に追加する必要もあります。

4

2 に答える 2

1

そのため、Vim のドキュメントと Google を数時間読んだ後、この autocmd を思いつきました (読みやすいように 2 行に分けています:

" Make gf work on Chef include_recipe lines
" Add all cookbooks/*/recipe dirs to Vim's path variable
autocmd BufRead,BufNewFile */cookbooks/*/recipes/*.rb 
   \ setlocal path+=recipes;/cookbooks/**1
于 2013-01-07T05:35:45.297 に答える
0

テンプレートでも同じことができたらいいと思いませんか? 例えば:

template "/etc/sudoers" do
  source "sudoers.erb"
end

sudoers.erb で gf を実行すると、sudoers テンプレートがプルアップされ、複数存在する場合は分割ウィンドウでプルアップされます!

于 2013-01-07T16:29:03.993 に答える