我已經看到一些有趣的行爲與Instagram寶石和實時API,我想創建一個基本的應用程序來創建訂閱和處理Instagrams的迴應。以下是創建訂閱並將標記名保存到我的數據庫的代碼。Ruby On Rails:Instagram的寶石,無法達到回調url
def create
@subscription = Subscription.new params[:subscription]
options = {:object_id => params[:subscription][:tag_name]}
if @subscription.save
Instagram.create_subscription('tag', "http://myapp.herokuapp.com/subscriptions/process_subscription/", aspect = 'media', options)
redirect_to "/subscriptions/tag/#{@subscription.tag_name}"
end
通知回調網址是Heroku的是可到達的,有趣的是,當我去subscriptions/new
在Heroku的域Instagram的API給了我一個「錯誤的請求,無法達到回調URL」。當我使用相同的回調url創建curl上的訂閱時,一切都按預期工作,當我在本地主機上使用subscriptions/new
(具有相同的回調URL集)時,它也可以按預期工作。下面是process_subscription行動:
def process_subscription
if params["hub.challenge"]
render :text => params["hub.challenge"]
else
PrivatePub.publish_to("/subscriptions/tag/#{params[:object_id]}", payload: params[:_json])
end
end
第一個if語句會照顧pubsubhubub挑戰。一旦實際創建訂閱,我就不會遇到接收和處理有效負載的問題。所以現在唯一我能想到的是,當我在heroku域名時,服務器進程在某種程度上忙於Instagram發佈回來時,我不明白這是如何可能的,所以任何建議將不勝感激。
這是服務器日誌訂閱成功和失敗時的鏈接。請注意,我在這些日誌中註銷了後參數。 https://gist.github.com/4256108。
除了這個Thread方法,更好的解決方案是使用像Unicorn這樣的服務器來處理默認的併發進程。 – jonlunsford