Yeah,<div><br class="webkit-block-placeholder"></div><div>The bebo adapter is a work in progress. &nbsp;A big hack actually to get things in production for <a href="http://travelerstable.com">travelerstable.com</a>. &nbsp;I was about to split the repo and start implementing it in a much cleaner way. &nbsp;I&#39;ll put that back on my list of things todo and see if we can&#39;t get a more extensible architecture in place.</div>
<div><br></div><div>Dave</div><div><br class="webkit-block-placeholder"></div><div><br><br><div class="gmail_quote">On Wed, Apr 2, 2008 at 12:10 PM, Jonathan Otto &lt;<a href="mailto:jonathan.otto@gmail.com">jonathan.otto@gmail.com</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Dave, Mike et al.,<br>
<br>
I like the Bebo adapter, but I was still hoping to have the<br>
functionality to change the API paths in the plugin, and allow the<br>
adapters to focus on the API methods.<br>
<br>
I have discovered that this is much harder to do than I thought. The<br>
Facebooker plugin is built in a way that will require quite a bit of<br>
reconfiguration:<br>
<br>
The canvas page, and secret key seem to be getting called from either<br>
static methods or ENV variables before the session is created, but<br>
with my additions it is not until the session is created that the<br>
class methods are ready with the correct canvas page and API URLs.<br>
Also, the method being used to access the session<br>
(Facebooker::Session.current) seems to return the hash instead of the<br>
actual Ruby object.<br>
<br>
Changing this is going to require configuration that I am not sure the<br>
commit team is willing to commit. Still, I have attached what code I<br>
have added so far. Let me know if you guys want to continue down this<br>
path and I&#39;ll keep working, but until then I&#39;m just going to hardcode<br>
an adapter (as Dave did) with what I need.<br>
<font color="#888888"><br>
Jonathan<br>
</font><div><div></div><div class="Wj3C7c"><br>
On Tue, Apr 1, 2008 at 4:39 PM, David Clements &lt;<a href="mailto:digidigo@gmail.com">digidigo@gmail.com</a>&gt; wrote:<br>
&gt; Not sure if I am totally following you.<br>
&gt;<br>
&gt; In the bebo_adapter I created I overrode the controller method<br>
&gt;<br>
&gt;<br>
&gt; &nbsp;new_facebook_session &nbsp;to create the appropriate session object at the time<br>
&gt; the request parameters are processed. &nbsp;After you have the appropriate<br>
&gt; Session object then everything should be able to be contained within that<br>
&gt; Session object. &nbsp;I don&#39;t think you need the params being processed again.<br>
&gt;<br>
&gt; What I was going to do is make sure the Facebooker::Sesttion.current_session<br>
&gt; always hold the correct session.<br>
&gt;<br>
&gt; &nbsp;Then if you need to access some configuration, like deep in url_rewriting,<br>
&gt; you can call Facebooker::Session.current_session.application_base<br>
&gt;<br>
&gt; Not sure if that helps.<br>
&gt;<br>
&gt; Here are a couple of other issue that might come up.<br>
&gt;<br>
&gt; If you are doing any async processing then you will not have an request<br>
&gt; parameters to go off of so creating the correct session type should be<br>
&gt; enough to encapsulate all the configuration parameters. &nbsp;This is another<br>
&gt; reason why may want to process the parameters once and then have everything<br>
&gt; else go off the current_session object.<br>
&gt;<br>
&gt; Hope that helps, &nbsp;I am attaching the bebo_adapter that I have in production<br>
&gt; right now in case it helps. &nbsp;There are a lot of other places in bebo that<br>
&gt; the API&#39;s don&#39;t match up so I have to patch different places in the code.<br>
&gt;<br>
&gt; Dave<br>
&gt;<br>
&gt;<br>
&gt; On Tue, Apr 1, 2008 at 3:24 PM, Jonathan Otto &lt;<a href="mailto:jonathan.otto@gmail.com">jonathan.otto@gmail.com</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt; &gt; I&#39;m close to getting this working in a fairly DRY fashion. First, a<br>
&gt; &gt; few questions and some guidance.<br>
&gt; &gt;<br>
&gt; &gt; Right now I have all the configuration variables loaded from<br>
&gt; &gt; facebooker.yml. You can specify 3 different APIs for each RAILS_ENV -<br>
&gt; &gt; facebook, bebo, or ringside, but if you specify nothing, it defaults<br>
&gt; &gt; to the Facebook configuration. &nbsp;When the plugin is initialized it<br>
&gt; &gt; stores the YAML file into the ENV hash.<br>
&gt; &gt;<br>
&gt; &gt; The plan is that the session object will be created by examining the<br>
&gt; &gt; POST parameters on each request and grabbing the correct configuration<br>
&gt; &gt; from the ENV hash. Other classes needing the information will call<br>
&gt; &gt; @session.apps_url, or @session.www_url etc..<br>
&gt; &gt;<br>
&gt; &gt; Before I can continue on this route, I need to access the parameters<br>
&gt; &gt; hash. So is there a built in way to access the parameter hash from the<br>
&gt; &gt; session class? I could pass it in everywhere<br>
&gt; &gt; Facebooker::Session.create, or Session.secret_key, etc.. is called,<br>
&gt; &gt; but that would require a few changes in the controller.<br>
&gt; &gt;<br>
&gt; &gt; This seems optimal because it allows each request to your application<br>
&gt; &gt; to respond to requests from Bebo, Facebook, Ringside, or other future<br>
&gt; &gt; APIs without reloading the YAML file.<br>
&gt; &gt;<br>
&gt; &gt; Please provide suggestions, corrections, or guidance.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Tue, Apr 1, 2008 at 8:23 AM, Mike Mangino &lt;<a href="mailto:mmangino@elevatedrails.com">mmangino@elevatedrails.com</a>&gt;<br>
&gt; wrote:<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;On Apr 1, 2008, at 1:58 AM, Jonathan Otto wrote:<br>
&gt; &gt; &gt; &nbsp;&gt; Mike -<br>
&gt; &gt; &gt; &nbsp;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt; 1) Is the point of making them (the API URLs - currently constants)<br>
&gt; &gt; &gt; &nbsp;&gt; class methods so they can be more readily changed - as in after the<br>
&gt; &gt; &gt; &nbsp;&gt; plugin is loaded and during program execution? If it is not, I don&#39;t<br>
&gt; &gt; &gt; &nbsp;&gt; see why my above code wouldn&#39;t suffice.<br>
&gt; &gt; &gt; &nbsp;&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;They would change based upon the type of session used. Facebook will<br>
&gt; &gt; &gt; &nbsp;not change their API url during execution, so there is no need for<br>
&gt; &gt; &gt; &nbsp;that to change during requests. Each different container will have<br>
&gt; &gt; &gt; &nbsp;it&#39;s own session object.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;&gt; 2) If you guys plan on letting these URLs change during program<br>
&gt; &gt; &gt; &nbsp;&gt; execution, how will you detect what API to set the configuration for?<br>
&gt; &gt; &gt; &nbsp;&gt; The POST params might be the same (At least I suspect they are the<br>
&gt; &gt; &gt; &nbsp;&gt; same for Bebo and Facebook, Ringside however does have some unique<br>
&gt; &gt; &gt; &nbsp;&gt; additions).<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;You need some way to tell what site you are talking to. Facebook and<br>
&gt; &gt; &gt; &nbsp;Bebo have different parameters. Bebo uses sn_* where facebook uses<br>
&gt; &gt; &gt; &nbsp;fb_*. Each container will need to provide a way of determining if the<br>
&gt; &gt; &gt; &nbsp;request is for them. Once a session is active, the stored session will<br>
&gt; &gt; &gt; &nbsp;tell you what you need to know.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt; 3) What are magic constants?<br>
&gt; &gt; &gt; &nbsp;&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;By magic constants, I mean strings in the API. For instance some<br>
&gt; &gt; &gt; &nbsp;methods cal session.post on &quot;facebook.users.user_getInfo&quot;, that is a<br>
&gt; &gt; &gt; &nbsp;magic constant. Instead, it should be session.post(:user_get_info) or<br>
&gt; &gt; &gt; &nbsp;something similar. Then, the user can look up what API key it needs to<br>
&gt; &gt; &gt; &nbsp;use for that platform.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;&gt; 4) Could you give more detail on this? &quot;We should take every magic<br>
&gt; &gt; &gt; &nbsp;&gt; constant and turn it into a call on the<br>
&gt; &gt; &gt; &nbsp;&gt; session.&quot;<br>
&gt; &gt; &gt; &nbsp;&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;I explained this one above.<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;Mike<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;&gt; On Mon, Mar 31, 2008 at 7:02 PM, Mike Mangino<br>
&gt; &gt; &gt; &nbsp;&gt; &lt;<a href="mailto:mmangino@elevatedrails.com">mmangino@elevatedrails.com</a>&gt; wrote:<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; Why not just make the constants be class methods on the session?<br>
&gt; Then<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; you just need to worry about creating the right kind of session and<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; all of the other calls will magically work. Does that sound sane?<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; We should take every magic constant and turn it into a call on the<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; session.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; Mike<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; On Mar 31, 2008, at 5:57 PM, David Clements wrote:<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; For Bebo, I subclassed Facebooker::Session into a BeboSession. &nbsp;And<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; then monkey patched all the calls that use constants. &nbsp;The ENV<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; approach doesn&#39;t work for Bebo since iI am running Facebook and<br>
&gt; Bebo<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; and Web in the same app.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; I have been thinking that this could be generalized more possibly<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; into<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; facebooker.yml or some other YAML. &nbsp;I was thinking that the whole<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; configuration could be keyed off of the api_key that gets sent with<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; the request. &nbsp;That way you could actually run more than one<br>
&gt; facebook<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; app in the same rails instance.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; How does this Ringside Networks work? &nbsp;Do you assign an API KEY?<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; Thanks,<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; Dave<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; On Mar 31, 2008, at 2:53 PM, Jonathan Otto wrote:<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; Dave, since the URLs will no longer be static are you still using<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; ruby<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; constants to store the URLs? Right now I am grabbing the URL<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; configuration from facebooker.yml and storing them into the ENV<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; constant array at the end of init.rb.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; But this doesn&#39;t work during tests.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; For example in session_test.rb&#39;s setup method, I set the ENV array<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; (like I do in init.rb) right before calling the<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; Facebook::Session.create, but the Facebooker::Session class can&#39;t<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; see<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; ENV. I&#39;m assuming there is a better way of handling this. Let me<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; know<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; if any of you have any suggestions. I&#39;ll complete the test.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; These are the constants I am talking about:<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &nbsp;APPS_SERVER_BASE_URL &nbsp; &nbsp; &nbsp;= ENV[&#39;APPS_SERVER_BASE_URL&#39;] ||<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &quot;<a href="http://apps.facebook.com" target="_blank">apps.facebook.com</a>&quot;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &nbsp;API_SERVER_BASE_URL &nbsp; &nbsp; &nbsp; = ENV[&#39;API_SERVER_BASE_URL&#39;] ||<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &quot;<a href="http://api.facebook.com" target="_blank">api.facebook.com</a>&quot;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &nbsp;API_PATH_REST &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; = ENV[&#39;API_PATH_REST&#39;] || &quot;/<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; restserver.php&quot;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &nbsp;WWW_SERVER_BASE_URL &nbsp; &nbsp; &nbsp; = ENV[&#39;WWW_SERVER_BASE_URL&#39;] ||<br>
&gt; &quot;<a href="http://www.facebook.com" target="_blank">www.facebook.com</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &quot;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &nbsp;WWW_PATH_LOGIN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= ENV[&#39;WWW_PATH_LOGIN&#39;] || &quot;/login.php&quot;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &nbsp;WWW_PATH_ADD &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= ENV[&#39;WWW_PATH_ADD&#39;] || &quot;/add.php&quot;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &nbsp;WWW_PATH_INSTALL &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= ENV[&#39;WWW_PATH_INSTALL&#39;] || &quot;/<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; install.php&quot;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; Right now that code is in session.rb. It seems the best way to do<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; this<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; is to allow people to set these parameters in the facebooker.yml<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; optionally, and if they are not set then it defaults to Facebook<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; addresses. I just don&#39;t know the best way to make the<br>
&gt; configuration<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; portable.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; On Mon, Mar 31, 2008 at 12:39 PM, David Clements<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt; &lt;<a href="mailto:digidigo@gmail.com">digidigo@gmail.com</a>&gt; wrote:<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; Can you submit this as a patch, with tests, &nbsp;I have &nbsp;a &nbsp;bebo<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; adapter that I<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; have been working on so I can take a look and see if it fits in<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; with that,<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; as I have had similar issues.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; Dave<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; On Mon, Mar 31, 2008 at 11:28 AM, Jonathan Otto<br>
&gt; &lt;<a href="mailto:jonathan.otto@gmail.com">jonathan.otto@gmail.com</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; I am requesting that we change the paths that absolutely point<br>
&gt; to<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; the<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; facebook URL.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; In the PHP client there is a method in the facebook.php file<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; called<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; get_facebook_url() so this is easy to change there.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; One reason for this:<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; Ringside Networks is a drop in replacement for Facebook that<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; can be<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; used for localhost development and eventually an abstraction for<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; most<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; social networks - it mimics the Facebook API so the Facebooker<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; client<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; works except for the URLs pointing to the Facebook domain. I<br>
&gt; have<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; changes ready if Mike Mangino or anyone else is willing to<br>
&gt; commit<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; them.<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://wiki.ringsidenetworks.org/display/ringside/Home" target="_blank">http://wiki.ringsidenetworks.org/display/ringside/Home</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; Facebooker-talk mailing list<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:Facebooker-talk@rubyforge.org">Facebooker-talk@rubyforge.org</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt; <a href="http://rubyforge.org/mailman/listinfo/facebooker-talk" target="_blank">http://rubyforge.org/mailman/listinfo/facebooker-talk</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; _______________________________________________<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; Facebooker-talk mailing list<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; <a href="mailto:Facebooker-talk@rubyforge.org">Facebooker-talk@rubyforge.org</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;&gt; <a href="http://rubyforge.org/mailman/listinfo/facebooker-talk" target="_blank">http://rubyforge.org/mailman/listinfo/facebooker-talk</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; --<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; Mike Mangino<br>
&gt; &gt; &gt; &nbsp;&gt;&gt; <a href="http://www.elevatedrails.com" target="_blank">http://www.elevatedrails.com</a><br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt; &nbsp;&gt;&gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt; &nbsp;--<br>
&gt; &gt; &gt; &nbsp;Mike Mangino<br>
&gt; &gt; &gt; &nbsp;<a href="http://www.elevatedrails.com" target="_blank">http://www.elevatedrails.com</a><br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt; &gt;<br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
</div></div></blockquote></div><br></div>