<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>has_many :thoughts: Capistrano Twitter task, take 2</title>
    <link>http://blog.kineticweb.com/articles/2008/02/16/capistrano-twitter-task-take-2</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>Musings from a Ruby on Rails development team</description>
    <item>
      <title>Capistrano Twitter task, take 2</title>
      <description>&lt;p&gt;In my &lt;a href="http://blog.kineticweb.com/articles/2008/02/10/capistrano-twitter-task"&gt;original post&lt;/a&gt;, I explained how I used the twitter4r gem to post when we deployed an app with capistrano. &lt;a href="http://rubyology.com/"&gt;Chris Matthieu&lt;/a&gt; posted &lt;a href="http://blog.kineticweb.com/articles/2008/02/10/capistrano-twitter-task#comments"&gt;a comment&lt;/a&gt; about how to do it without the twitter4r gem. I actually like this better, especially after we started having trouble with the twitter4t gem. So, here&amp;#8217;s his version that I adapted slightly:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;desc&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;posts to twitter that an application has been deployed to a web server&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
&lt;span class="ident"&gt;task&lt;/span&gt; &lt;span class="symbol"&gt;:send_tweet&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt;
  &lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;open-uri&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
  &lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;net/http&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;

  &lt;span class="ident"&gt;url&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;URI&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;parse&lt;/span&gt;&lt;span class="punct"&gt;('&lt;/span&gt;&lt;span class="string"&gt;http://twitter.com/statuses/update.xml&lt;/span&gt;&lt;span class="punct"&gt;')&lt;/span&gt;
  &lt;span class="ident"&gt;req&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Net&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;HTTP&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;url&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;path&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;
  &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;basic_auth&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;your_username&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;:&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;+&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;your_password&lt;/span&gt;&lt;span class="punct"&gt;',&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;
  &lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;set_form_data&lt;/span&gt;&lt;span class="punct"&gt;({'&lt;/span&gt;&lt;span class="string"&gt;status&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;Deployed &lt;span class="expr"&gt;#{application}&lt;/span&gt; to &lt;span class="expr"&gt;#{rails_env}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;})&lt;/span&gt;
  &lt;span class="ident"&gt;res&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Net&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;HTTP&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;url&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;host&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;url&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;port&lt;/span&gt;&lt;span class="punct"&gt;).&lt;/span&gt;&lt;span class="ident"&gt;start&lt;/span&gt; &lt;span class="punct"&gt;{|&lt;/span&gt;&lt;span class="ident"&gt;http&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt; &lt;span class="ident"&gt;http&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;request&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;req&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Thanks, Chris!&lt;/p&gt;</description>
      <pubDate>Sat, 16 Feb 2008 11:17:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:5a3fefee-ff34-41e8-87fd-ba9d8ed177d6</guid>
      <author>Colin A. Bartlett</author>
      <link>http://blog.kineticweb.com/articles/2008/02/16/capistrano-twitter-task-take-2</link>
      <category>capistrano</category>
      <category>twitter</category>
    </item>
    <item>
      <title>"Capistrano Twitter task, take 2" by Pat Nakajima</title>
      <description>Hey, I put together a small Twitter script in Ruby that you could easily tie into a Cap task. It allows you to not only update, but also direct message and view sent direct messages (as those were the functions I needed). It wouldn't be tough to add more.

The script is here: &lt;a href="http://configurati.com/pages/a-twitter-script" rel="nofollow"&gt;http://configurati.com/pages/a-twitter-script&lt;/a&gt;</description>
      <pubDate>Fri, 22 Feb 2008 15:50:51 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:a1f32d1c-c4a9-4d6b-8ce0-c1e501b5bc8b</guid>
      <link>http://blog.kineticweb.com/articles/2008/02/16/capistrano-twitter-task-take-2#comment-237</link>
    </item>
    <item>
      <title>"Capistrano Twitter task, take 2" by Craig T.</title>
      <description>What kind of Twitter4R problem?  I have never had an issue with Twitter4R gem except the 70 reqs/min limit that has nothing to do with Twitter4R and you will still experience the same issue with the above task.</description>
      <pubDate>Sat, 16 Feb 2008 12:32:46 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4c732dae-b116-4d24-a0d2-17ad122035f7</guid>
      <link>http://blog.kineticweb.com/articles/2008/02/16/capistrano-twitter-task-take-2#comment-232</link>
    </item>
  </channel>
</rss>
