Twitter gemを使用してツイートを取り込むための簡単なJekyllプラグインを作成しました(以下を参照)。プラグインのrubyスクリプトを開いているGithubサイトに残したいのですが、Twitter APIが最近変更されたため、gemに認証資格が必要になりました。
require 'twitter' # Twitter API
require 'redcarpet' # Formatting links
module Jekyll
class TwitterFeed < Liquid::Tag
def initialize(tag_name, text, tokens)
super
input = text.split(/, */ )
@user = input[0]
@count = input[1]
if input[1] == nil
@count = 3
end
end
def render(context)
# Initialize a redcarpet markdown renderer to autolink urls
# Could use octokit instead to get GFM
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML,
:autolink => true,
:space_after_headers => true)
## Attempt to load credentials externally here:
require '~/.twitter_auth.rb'
out = "<ul>"
tweets = @client.user_timeline(@user)
for i in 0 ... @count.to_i
out = out + "<li>" + markdown.render(tweets[i].text) +
" <a href=\"http://twitter.com/" + @user + "/statuses/" +
tweets[i].id.to_s + "\">" + tweets[i].created_at.strftime("%I:%M %Y/%m/%d") +
"</a> " + "</li>"
end
out + "</ul>"
end
end
end
Liquid::Template.register_tag('twitter_feed', Jekyll::TwitterFeed)
回線を入れ替えたら
require '~/.twitter_auth.rb'
ここtwitter_auth.rb
に次のようなものが含まれています:
require 'twitter'
@client = Twitter::Client.new(
:consumer_key => "CEoYXXXXXXXXXXX",
:consumer_secret => "apnHXXXXXXXXXXXXXXXXXXXXXXXX",
:oauth_token => "105XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
:oauth_token_secret => "BJ7AlXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
)
これらのコンテンツを上記のスクリプトに直接配置すると、プラグインスクリプトは問題なく機能します。しかし、それらを外部ファイルに移動して、図のように読み込もうとすると、Jekyllは認証に失敗します。から呼び出すと、この関数は問題なく機能しているように見えるirb
ので、Jekyllビルド中に機能しない理由がわかりません。