<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,3 +1,17 @@
+# Determine the appropriate Request class to modify (in Rails 2.3.0 this
+# changed from AbstractRequest to Request)
+# Normally we should be able to simply use ActionController.const_defined?('AbstractRequest')
+# instead of the begin/rescue block below, but for some reason this returns true at this
+# stage. Perhaps due to the autoload magic in action_controller.rb?
+begin
+  ActionController.const_get('AbstractRequest')
+  FACEBOOKER_REQUEST_CLASS = ActionController::AbstractRequest
+  FACEBOOKER_RAILS_PRE_2_3_0 = true
+rescue
+  FACEBOOKER_REQUEST_CLASS = ActionController::Request
+  FACEBOOKER_RAILS_PRE_2_3_0 = false
+end
+
 # Added support to the Facebooker.yml file for switching to the new profile design..
 # Config parsing needs to happen before files are required.
 facebook_config = &quot;#{RAILS_ROOT}/config/facebooker.yml&quot;
@@ -44,8 +58,8 @@ end
 # When making get requests, Facebook sends fb_sig parameters both in the query string
 # and also in the post body. We want to ignore the query string ones because they are one
 # request out of date
-# We only do thise when there are POST parameters so that IFrame linkage still works
-class ActionController::AbstractRequest
+# We only do this when there are POST parameters so that IFrame linkage still works
+FACEBOOKER_REQUEST_CLASS.class_eval do
   def query_parameters_with_facebooker
     if request_parameters.blank?
       query_parameters_without_facebooker</diff>
      <filename>init.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,24 +1,21 @@
-module ::ActionController
-  class AbstractRequest
-    def request_method_with_facebooker
-      if parameters[:fb_sig_request_method]==&quot;GET&quot; and parameters[:_method].blank?
-        parameters[:_method]=&quot;GET&quot;
-      end
-      request_method_without_facebooker
-    end
-    
-    if new.methods.include?(&quot;request_method&quot;)
-      alias_method_chain :request_method, :facebooker 
+FACEBOOKER_REQUEST_CLASS.class_eval do 
+  def request_method_with_facebooker
+    if parameters[:fb_sig_request_method]==&quot;GET&quot; and parameters[:_method].blank?
+      parameters[:_method]=&quot;GET&quot;
     end
+    request_method_without_facebooker
+  end
     
-    def xml_http_request_with_facebooker?
-      parameters[&quot;fb_sig_is_mockajax&quot;] == &quot;1&quot;  ||
-      parameters[&quot;fb_sig_is_ajax&quot;] == &quot;1&quot; ||
-      xml_http_request_without_facebooker?
-    end
-    alias_method_chain :xml_http_request?, :facebooker
-    # we have to re-alias xhr? since it was pointing to the old method
-    alias xhr? :xml_http_request?
+  if !FACEBOOKER_RAILS_PRE_2_3_0 || new.methods.include?(&quot;request_method&quot;)
+    alias_method_chain :request_method, :facebooker 
+  end
     
+  def xml_http_request_with_facebooker?
+    parameters[&quot;fb_sig_is_mockajax&quot;] == &quot;1&quot;  ||
+    parameters[&quot;fb_sig_is_ajax&quot;] == &quot;1&quot; ||
+    xml_http_request_without_facebooker?
   end
+  alias_method_chain :xml_http_request?, :facebooker
+  # we have to re-alias xhr? since it was pointing to the old method
+  alias xhr? :xml_http_request?
 end
\ No newline at end of file</diff>
      <filename>lib/facebooker/rails/facebook_request_fix.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,25 +1,29 @@
-module ActionController
-  class CgiRequest
-    alias :initialize_aliased_by_facebooker :initialize
+if FACEBOOKER_RAILS_PRE_2_3_0
+  module ActionController
+    # TODO: Removed in Rails 2.3.0. Leaving this is probably benign, but we might
+    #       want to conditionally evaluate this based on the Rails version,
+    class CgiRequest
+      alias :initialize_aliased_by_facebooker :initialize
 
-    def initialize(cgi, session_options = {})
-      initialize_aliased_by_facebooker(cgi, session_options)
-      @cgi.instance_variable_set(&quot;@request_params&quot;, request_parameters.merge(query_parameters))
-    end
+      def initialize(cgi, session_options = {})
+        initialize_aliased_by_facebooker(cgi, session_options)
+        @cgi.instance_variable_set(&quot;@request_params&quot;, request_parameters.merge(query_parameters))
+      end
     
-    DEFAULT_SESSION_OPTIONS[:cookie_only] = false
-  end 
-end
+      DEFAULT_SESSION_OPTIONS[:cookie_only] = false
+    end 
+  end
 
-module ActionController
-  class RackRequest &lt; AbstractRequest #:nodoc:
-    alias :initialize_aliased_by_facebooker :initialize
+  module ActionController
+    class RackRequest &lt; Request #:nodoc:
+      alias :initialize_aliased_by_facebooker :initialize
 
-    def initialize(cgi, session_options = {})
-      initialize_aliased_by_facebooker(cgi, session_options)
-      @cgi.instance_variable_set(&quot;@request_params&quot;, request_parameters.merge(query_parameters))
-    end
-  end 
+      def initialize(cgi, session_options = {})
+        initialize_aliased_by_facebooker(cgi, session_options)
+        @cgi.instance_variable_set(&quot;@request_params&quot;, request_parameters.merge(query_parameters))
+      end
+    end 
+  end
 end
 
 class CGI  
@@ -59,11 +63,15 @@ class CGI
         'fb_sig_session_key'
       end
 
-      alias :create_new_id_aliased_by_facebooker :create_new_id
+      # TODO: Make sure this is correct. There's no create_new_id in Rails 2.3.0, but
+      #       we might need to hook into some other method instead.
+      if FACEBOOKER_RAILS_PRE_2_3_0
+        alias :create_new_id_aliased_by_facebooker :create_new_id
 
-      def create_new_id
-        @new_session = true
-        @session_id || create_new_id_aliased_by_facebooker
+        def create_new_id
+          @new_session = true
+          @session_id || create_new_id_aliased_by_facebooker
+        end
       end
   end
 end
\ No newline at end of file</diff>
      <filename>lib/facebooker/rails/facebook_session_handling.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
-module ::ActionController
-  class AbstractRequest                         
-    def relative_url_root
-      Facebooker.path_prefix
-    end                                         
-  end
+FACEBOOKER_REQUEST_CLASS.class_eval do
+  def relative_url_root
+    Facebooker.path_prefix
+  end                                         
+end
   
+module ::ActionController
   class Base
     def self.relative_url_root
       Facebooker.path_prefix</diff>
      <filename>lib/facebooker/rails/facebook_url_rewriting.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>33c871f588b8f5f7d2bdfe94dea0231620943b2d</id>
    </parent>
  </parents>
  <author>
    <name>Mirko Froehlich</name>
    <email>mirko@tipmobile.com</email>
  </author>
  <url>http://github.com/digitalhobbit/facebooker/commit/15ac372c0a6e168258f466d343e27137dc90b34f</url>
  <id>15ac372c0a6e168258f466d343e27137dc90b34f</id>
  <committed-date>2009-02-02T18:16:52-08:00</committed-date>
  <authored-date>2009-02-02T18:16:52-08:00</authored-date>
  <message>First stab at adapting to Rails 2.3.0

ActionController::AbstractRequest no longer exists in Rails 2.3.0, so we're
detecting the Rails version and patching ActionController::Request instead,
if appropriate. We also skip a few other patches if we detect Rails 2.3.0.</message>
  <tree>ff36341a42fc5e0c5960b94bfac97ae3caf5aeef</tree>
  <committer>
    <name>Mirko Froehlich</name>
    <email>mirko@tipmobile.com</email>
  </committer>
</commit>
