Here's a small patch you can stick at the end of environment.rb to restore REST-ful routes.
contents = request.body.read
facebook_method_override = nil
if contents =~ /fb_sig_request_method=([A-Z]+)/
facebook_method_override = $1
end
request.body.string = contents
{:method => facebook_method_override ? facebook_method_override.downcase.intern : request.method}
end
end
UPDATE: Here's a slightly better implementation that allows the .get? and .post? helpers as well as a few other things to work (thanks Chris Nolan for reminding us to update this blog entry):
ActionController::AbstractRequest.class_eval do
def request_method_with_facebook_overrides
@request_method ||= begin
case
when parameters[:_method]
parameters[:_method].downcase.to_sym
when parameters[:fb_sig_request_method]
parameters[:fb_sig_request_method].downcase.to_sym
else
request_method_without_facebook_overrides
end
end
end
alias_method_chain :request_method, :facebook_overrides
end
