Ich verwende eine Kombination von omniauth
und delayed_job
mit Facebook zu integrieren. Ich habe ein Authentication
Modell, das ein wenig wie folgt aussieht:Ruby on Rails fb_graph Fehler mit undefinierter Methode bytesize bei Ausführung von delayed_job
class Authentication < ActiveRecord::Base
def account
@account ||= FbGraph::User.me(token)
end
def post_to!(opts = {})
account.feed!(opts)
end
end
So dann von der Konsole kann ich so etwas tun:
auth.post_to :message => 'Foo bar', :link => 'http://google.com'
... und alles funktioniert perfekt und ein Update Auf meinen Facebook-Feed gepostet.
jedoch in der Anwendung ich einen benutzerdefinierten verzögert Job erstellt habe, die genau die oben tut, nur nicht jedes Mal mit dem folgenden Fehler-Stack:
undefined method `bytesize'' for nil:NilClass
/Users/aaron/.rvm/gems/[email protected]/gems/activesupport-3.1.3/lib/active_support/whiny_nil.rb:48:in `method_missing''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:830:in `block in escape''
/Users/aaron/.rvm/gems/[email protected]/gems/activesupport-3.1.3/lib/active_support/core_ext/string/output_safety.rb:142:in `gsub''
/Users/aaron/.rvm/gems/[email protected]/gems/activesupport-3.1.3/lib/active_support/core_ext/string/output_safety.rb:142:in `gsub''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:829:in `escape''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:822:in `block in escape_query''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:818:in `each''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:818:in `collect''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:818:in `escape_query''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:809:in `create_query_part_str''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:538:in `set_content''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:447:in `init_request''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient/http.rb:705:in `new_request''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:997:in `create_request''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:866:in `do_request''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:756:in `request''
/Users/aaron/.rvm/gems/[email protected]/gems/httpclient-2.2.4/lib/httpclient.rb:666:in `post''
/Users/aaron/.rvm/gems/[email protected]/gems/fb_graph-2.4.7/lib/fb_graph/node.rb:55:in `block in post''
/Users/aaron/.rvm/gems/[email protected]/gems/fb_graph-2.4.7/lib/fb_graph/node.rb:122:in `handle_response''
/Users/aaron/.rvm/gems/[email protected]/gems/fb_graph-2.4.7/lib/fb_graph/node.rb:54:in `post''
/Users/aaron/.rvm/gems/[email protected]/gems/fb_graph-2.4.7/lib/fb_graph/connections/feed.rb:15:in `feed!''
/Users/aaron/Sites/bb/app/models/authentication.rb:40:in `post_to!''
/Users/aaron/Sites/bb/lib/share_activity_job.rb:39:in `block in perform''
/Users/aaron/Sites/bb/lib/share_activity_job.rb:11:in `each''
/Users/aaron/Sites/bb/lib/share_activity_job.rb:11:in `perform''
ich offiziell auf den Punkt bekommen habe, wo ich anfangen teure Computer aus dem Fenster werfen. Kann jemand irgendeinen Einblick geben, warum es scheitert, warum es funktioniert, wenn es von der Konsole aus ausgeführt wird, aber scheitert, wenn es von einem benutzerdefinierten delayed_job ausgeführt wird?
Jede Hilfe wird sehr geschätzt. Vielen Dank.
ich das gleiche Problem mit bin. Hast du schon eine Antwort gefunden, als du gepostet hast? –