我已经编写了一个简单的 Jekyll 插件来使用 twitter gem 来拉入我的推文(见下文)。我想将插件的 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 构建期间不起作用。