0

octopress の rakefile にカスタム deploy メソッドを作成しました。機能はシンプルで、

私はできるようにしたい:

rake を生成し、すべてのファイルをパブリック フォルダー (例: /home/jeremy/website/wwwdata) に配置します(これをサーバーにアップロードします)。

これまでのところ、私はこれを持っています:

desc "compress output files"
task :compress do
    puts "## Compressing html"
    # read every .htm and .html in a directory

#TODO: Find this directory! 

puts public_dir

    Dir.glob("public_dir/**/*.{htm,html}").each do|ourfile|
    linedata = ""
    #open the file and parse it
    File.open(ourfile).readlines.each do |line|
        #remove excess spaces and carraige returns
        line = line.gsub(/\s+/, " ").strip.delete("\n")
        #append to long string
        linedata << line
    end
    #reopen the file
    compfile = open(ourfile, "w")
    #write the compressed string to file
    compfile.write(linedata)
    #close the file
    compfile.close
    end 
end

私が抱えている問題は、その出力ディレクトリを見つけることです。_config.yml で指定されており、明らかに rakefile で使用されていることは知っていますが、これらの変数のいずれかを使用しようとするたびに機能しません。

グーグルで検索してドキュメントを読みましたが、あまり見つかりませんでした。その情報を取得する方法はありますか?ハードコードされたファイル パスは必要ありません。これは、完了したらプラグインまたはプル リクエストとして送信して、他のユーザーが使用できるようにするためです。

4

1 に答える 1

1

次の方法で Jekyll 構成にアクセスできます。

require 'jekyll'

conf = Jekyll.configuration({})
#=> {
#     "source"      => "/Users/me/some_project",
#     "destination" => "/Users/me/some_project/_site",
#     ...
#   }

conf["destination"]
#=> "/Users/me/some_project/_site"

これを Rakefile で次のように使用できます。

require 'jekyll'
CONF = Jekyll.configuration({})

task :something do
  public_dir = CONF["destination"]

  Dir.glob("#{public_dir}/**/*.{htm,html}").each do |ourfile|

    # ...

  end
end

に引数を追加#{}したことに注意してください。そうしないと、実際の宛先ディレクトリではなく、文字通りのディレクトリが検索されます。public_dirDir.globpublic_dir/

于 2013-10-20T09:13:38.230 に答える