garb gem を使用して Google アナリティクス API を呼び出し、ページのページビュー数を表示する Jekyll プラグインを作成しました。私のアプローチの唯一の問題は、ページごとに API を呼び出すため、ビルド時間が遅くなり、API のユーザー呼び出し制限に達する可能性があることです。
すべてのデータを 1 回の呼び出しで返してローカルに保存し、各ページのページビュー カウントを調べることは可能ですが、私の Jekyll/Ruby-fu は十分ではありません。ページごとにAPIを呼び出すのではなく、一度実行してすべてのデータを取得し、現在の関数がアクセスできる場所にローカルに保存するプラグインを作成する方法がわかりません。
基本的に、私のコードは、ページ レイアウトに配置できるリキッド ブロックとして記述されています。
class GoogleAnalytics < Liquid::Block
def initialize(tag_name, markup, tokens)
super # options that appear in block (between tag and endtag)
@options = markup # optional optionss passed in by opening tag
end
def render(context)
path = super
# Read in credentials and authenticate
cred = YAML.load_file("/home/cboettig/.garb_auth.yaml")
Garb::Session.api_key = cred[:api_key]
token = Garb::Session.login(cred[:username], cred[:password])
profile = Garb::Management::Profile.all.detect {|p| p.web_property_id == cred[:ua]}
# place query, customize to modify results
data = Exits.results(profile,
:filters => {:page_path.eql => path},
:start_date => Chronic.parse("2011-01-01"))
data.first.pageviews
end
API へのすべての呼び出しを他の関数に移動し、jekyll が最初に 1 回実行されることを確認してから、上記のタグを調整してそのローカル データを読み取るにはどうすればよいでしょうか?
EDITこれはジェネレーターで実行でき、データをファイルに書き込むことができるようです。このブランチの例を参照してください。結果をサブセット化する方法を理解する必要があります: https://github.com/Sija/garb/issues/22