<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Developers at API Digital</title>
	<atom:link href="http://dev.blog.apid.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://dev.blog.apid.com</link>
	<description>Just another API Digital Blog Network weblog</description>
	<pubDate>Tue, 18 Aug 2009 18:23:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<item>
		<title>Announcing Roart: A Ruby RT Client</title>
		<link>http://dev.blog.apid.com/2009/08/18/announcing-roart-a-ruby-rt-client/</link>
		<comments>http://dev.blog.apid.com/2009/08/18/announcing-roart-a-ruby-rt-client/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 18:23:31 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[roart]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=89</guid>
		<description><![CDATA[We have several customers using our installation of Best Practical&#8217;s Request Tracker (RT) system for keeping track of issues and making sure projects get done. We also have a few custom applications that we need to get information into and out of RT. Since most of our custom apps are written in Ruby, we started [...]]]></description>
			<content:encoded><![CDATA[<p>We have several customers using our installation of Best Practical&#8217;s Request Tracker (RT) system for keeping track of issues and making sure projects get done. We also have a few custom applications that we need to get information into and out of RT. Since most of our custom apps are written in Ruby, we started working on a library to make doing this as easy as possible. It may look a lot like ActiveRecord, and this is no accident. Since ActiveRecord is so easy and many people are already familiar with it, we based a large part of the API on it. </p>
<p>You can fork the project here: <a href="http://github.com/pjdavis/roart" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://github.com/pjdavis/roart');">http://github.com/pjdavis/roart</a></p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2009/08/18/announcing-roart-a-ruby-rt-client/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Autotest not working</title>
		<link>http://dev.blog.apid.com/2009/07/17/autotest-not-working/</link>
		<comments>http://dev.blog.apid.com/2009/07/17/autotest-not-working/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 21:56:27 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[testing]]></category>

		<category><![CDATA[autotest]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=85</guid>
		<description><![CDATA[Autotest broke on me, probably from months of neglect (I&#8217;ve been running tests directly from Textmate), and I had a tough time figuring it out. Whenever I tried to run autotest, I&#8217;d get:

/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:70:in `gets&#039;: No such file or directory - -u (Errno::ENOENT)
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:70:in `parse_input&#039;
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:182:in `unit_diff&#039;
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:56:in `unit_diff&#039;
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/bin/unit_diff:37
from /opt/ruby-enterprise/bin/unit_diff:19:in `load&#039;
from /opt/ruby-enterprise/bin/unit_diff:19

It turns out that [...]]]></description>
			<content:encoded><![CDATA[<p>Autotest broke on me, probably from months of neglect (I&#8217;ve been running tests directly from Textmate), and I had a tough time figuring it out. Whenever I tried to run autotest, I&#8217;d get:</p>
<pre class="syntax-highlight:sh">
/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:70:in `gets&#039;: No such file or directory - -u (Errno::ENOENT)
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:70:in `parse_input&#039;
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:182:in `unit_diff&#039;
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/lib/unit_diff.rb:56:in `unit_diff&#039;
from /opt/ruby-enterprise/lib/ruby/gems/1.8/gems/ZenTest-4.1.3/bin/unit_diff:37
from /opt/ruby-enterprise/bin/unit_diff:19:in `load&#039;
from /opt/ruby-enterprise/bin/unit_diff:19
</pre>
<p>It turns out that the autotest file in rubygems/bin/autotest wasn&#8217;t using the -s flag in the shebang line and that was causing the -u in the unit_diff program to be interpreted as a filename. To fix, i simply added -s to the end of the shebang line so it looks something like this:
<pre class="syntax-highlight:ruby">#!/opt/ruby-enterprise/bin/ruby -ws</pre>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2009/07/17/autotest-not-working/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby Enterprise Edition on FreeBSD</title>
		<link>http://dev.blog.apid.com/2009/05/05/ruby-enterprise-edition-on-freebsd/</link>
		<comments>http://dev.blog.apid.com/2009/05/05/ruby-enterprise-edition-on-freebsd/#comments</comments>
		<pubDate>Wed, 06 May 2009 02:31:38 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[freebsd]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=75</guid>
		<description><![CDATA[Tonight I was installing Ruby Enterprise Edition on FreeBSD old.stupid and I ran into a problem. I was including ActiveSupport to get the Hash.from_xml() function (really good if you need just a dirty hash from some xml you got) and every time I would require &#8216;active_support&#8217; i would get
&#8230;custom_require.rb:31:in `gem_original_require&#8217;: no such file to load [...]]]></description>
			<content:encoded><![CDATA[<p>Tonight I was installing Ruby Enterprise Edition on FreeBSD old.stupid and I ran into a problem. I was including ActiveSupport to get the Hash.from_xml() function (really good if you need just a dirty hash from some xml you got) and every time I would require &#8216;active_support&#8217; i would get</p>
<blockquote><p>&#8230;custom_require.rb:31:in `gem_original_require&#8217;: no such file to load &#8212; iconv (LoadError)</p></blockquote>
<p>If you ever have to install Ruby Enterprise Edition on FreeBSD, you may run into the same problem. What I had to do was.</p>
<pre class="syntax-highlight:sh"> cd ruby-enterprise-1.8.6-20090421/source/ext/iconv
/opt/ruby-enterprise/bin/ruby extconf.rb --prefix=/opt/ruby-enterprise --with-iconv-dir=/usr/local/
cp iconv.so /opt/ruby-enterprise/lib/ruby/1.8/i386-freebsdx.x/
</pre>
<p>That should get you running without having to reinstall Ruby Enterprise Edition. Why does this happen though? I found this on a mailing list from Hongli Lai at Phusion.</p>
<blockquote><p>The problem is that FreeBSD doesn&#8217;t add /usr/local/lib to GCC&#8217;s linker search path for some reason. libiconv.so is in /usr/local/lib, and so libiconv.so is not detected while installing REE. I had to manually hack iconv&#8217;s extconf.rb to work around this.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2009/05/05/ruby-enterprise-edition-on-freebsd/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Specing Mechanize ResponseCodeError</title>
		<link>http://dev.blog.apid.com/2009/05/03/specing-mechanize-responsecodeerror/</link>
		<comments>http://dev.blog.apid.com/2009/05/03/specing-mechanize-responsecodeerror/#comments</comments>
		<pubDate>Mon, 04 May 2009 01:19:55 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<category><![CDATA[testing]]></category>

		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=71</guid>
		<description><![CDATA[Working on a project this weekend, I found that i needed to tell if a page was not found (404 Error) and then do something based off that. I was writing specs and trying to figure out how to stub a Mechanize object to return a 404.  It turns out that anything except a 200 [...]]]></description>
			<content:encoded><![CDATA[<p>Working on a project this weekend, I found that i needed to tell if a page was not found (404 Error) and then do something based off that. I was writing specs and trying to figure out how to stub a Mechanize object to return a 404.  It turns out that anything except a 200 (OK), 301 (Moved Permanently) and 302 (Found, Redirect) will raise an exception. Specifically a WWW::Mechanize::ResponseCodeError.</p>
<p>RSpec conveniently gives us a way to say that a method will raise an exception when it is called. and_raise(ExceptionClass). Trying this out myself, I kept getting back</p>
<blockquote><p>wrong number of arguments (0 for 1)</p></blockquote>
<p>and I didn&#8217;t understand why. I came across a posting to the rspec-users mailing list that said that what i was doing (
<pre class="syntax-highlight:ruby">agent.stub(:get).with(some_url).and_raise(WWW::Mechanize::ResponseCodeError)</pre>
<p> wasn&#8217;t quite right. Many exception classes, it turns out, take an argument when they are raised. So I tried
<pre class="syntax-highlight:ruby">agent.stub(:get).with(some_url).and_raise(WWW::Mechanize::ResponseCodeError(agent))</pre>
<p>and that still didn&#8217;t work, as agent didn&#8217;t respond to :code. A little bit of stubbing later, and agent responds to code (returned a &#8220;400&#8243;) and now it works like a charm.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2009/05/03/specing-mechanize-responsecodeerror/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Why we chose Rails</title>
		<link>http://dev.blog.apid.com/2009/04/30/why-we-chose-rails/</link>
		<comments>http://dev.blog.apid.com/2009/04/30/why-we-chose-rails/#comments</comments>
		<pubDate>Fri, 01 May 2009 01:19:35 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=61</guid>
		<description><![CDATA[This is a reply to Rails is a Step by bryanp. Check out metabahn for some awesome guys who really know their stuff. I&#8217;m posting it here also because it got pretty long.
First off, I agree with the sentiment of the post, Rails is not the best way in all situations, just like PHP, Sinatra, [...]]]></description>
			<content:encoded><![CDATA[<p>This is a reply to <a href="http://metabahn.com/2009/03/rails-is-a-step/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://metabahn.com/2009/03/rails-is-a-step/');">Rails is a Step</a> by <a href="http://twitter.com/bryanp" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://twitter.com/bryanp');">bryanp</a>. Check out metabahn for some awesome guys who really know their stuff. I&#8217;m posting it here also because it got pretty long.</p>
<p>First off, I agree with the sentiment of the post, Rails is not the best way in all situations, just like PHP, Sinatra, Merb, Grails and whatever that busted C++ web framework is called are not the best way for every situation. However, Rails is a pretty good way.</p>
<p>I believe that Rails is sufficiently versatile that most web-based applications could be written successfully in Rails. Partly because of the limited domain in which web applications are created, and partly because of the sheer amount of mental power behind Rails development right now.</p>
<p>Many of the Rails  Consultancies springing up (Hashrocket, ENTP, etc&#8230;) are using rails almost exclusively. Does this mean they are treating rails as the destination? Well, not exactly. Rails just happens to be the tool they&#8217;re most comfortable with.</p>
<p>A lot of what is heard from the Rails super-evangelists is just that, someone pumping religion as the end-all be-all of whatever domain they&#8217;re in. However, I would venture to say that the vast majority of the the top Rails developers would say that Rails is not the best suite of tools for every situation.</p>
<p>It seems that the lash-back against Rails in the latter part of 2008 was less about the technology itself, and more about a) the hype building up around rails since 2005 b) the high profile outages of Twitter, c) spreading of FUD about something new by a minority that didn&#8217;t like Rails for various (not necessarily invalid) reasons.</p>
<p>It happens all the time. A very vocal minority will try something new, decided they don&#8217;t like it, and let everyone else know they don&#8217;t like it and why you shouldn&#8217;t either. They share their opinions as fact, over-generalize and spin information, and use community rivalries as reasons to dismiss whatever it is they hate. I think it&#8217;s less a technology issue than a human nature issue.</p>
<p>That said. Rails IS NOT the be-all end-all of web development.  You should devote time to exploring new tools, ideas, and technologies. That&#8217;s how you grow, however when you find something you like, you tend to stick with it. Nobody pays the bills by jumping to every new flavor of the month; eventually you have to produce something.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2009/04/30/why-we-chose-rails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Auto-Test Mundaine Validations</title>
		<link>http://dev.blog.apid.com/2009/01/15/auto-test-mundaine-validations/</link>
		<comments>http://dev.blog.apid.com/2009/01/15/auto-test-mundaine-validations/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 00:24:10 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[testing]]></category>

		<category><![CDATA[rspec]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=53</guid>
		<description><![CDATA[When you&#8217;re writing your spec files in RSpec, it is my belief that you should spec out even the validations that you add (validates_presence_of, validates_uniqueness_of, etc..). Even though these are core parts of Rails, your spec file should be able to be read by someone with little background in development and still get what is [...]]]></description>
			<content:encoded><![CDATA[<p>When you&#8217;re writing your spec files in RSpec, it is my belief that you should spec out even the validations that you add (validates_presence_of, validates_uniqueness_of, etc..). Even though these are core parts of Rails, your spec file should be able to be read by someone with little background in development and still get what is required of your application. Validating that a field is present and required is part of these specifications, so they should be there. However, testing to make sure something is always present isn&#8217;t necessarily exciting, and you&#8217;re basically doing the same thing over and over. Making sure that if a field is nil, it&#8217;s not saved to the database, and it give back an error. So I wrote something that will test to make sure that these fields are always valid. If this is already in RSpec, or something similar; or if you know a better way to do this, please let me know.</p>
<pre class="syntax-highlight:ruby">def validate_presence_of(klass, fields)
  fields.each do |field|
    it &amp;quot;should include #{field}&amp;quot; do
      lambda do
        instance = klass.create(field.to_sym =&amp;gt; nil)
        instance.errors.on(field.to_sym).should_not be_nil
      end.should_not change(klass, :count)
    end
  end
end
</pre>
<p>Stick that in your spec helper file, and now you can just add</p>
<pre class="syntax-highlight:ruby">
validate_presence_of(SomeClass, %w(afield another_field field3 ))
</pre>
<p>to your model specs, and you&#8217;ve just saved yourself alot of typing, and it&#8217;s still pretty clear what you&#8217;re trying to test.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2009/01/15/auto-test-mundaine-validations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using svn2git on OS X Leopard</title>
		<link>http://dev.blog.apid.com/2009/01/09/using-svn2git-on-os-x-leopard/</link>
		<comments>http://dev.blog.apid.com/2009/01/09/using-svn2git-on-os-x-leopard/#comments</comments>
		<pubDate>Sat, 10 Jan 2009 01:09:50 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[Git]]></category>

		<category><![CDATA[leopard]]></category>

		<category><![CDATA[os x]]></category>

		<category><![CDATA[scm]]></category>

		<category><![CDATA[subversion]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=57</guid>
		<description><![CDATA[I was trying to import the subversion repository for our central application to git tonight, and I ran into some problems.
First, I tried to install the svn2git gem, but i kept getting:

ERROR:  could not find gem svn2git locally or in a repository

and James Coglan doesn&#8217;t have github gems enabled on the repository. So I [...]]]></description>
			<content:encoded><![CDATA[<p>I was trying to import the subversion repository for our central application to git tonight, and I ran into some problems.<br />
First, I tried to install the svn2git gem, but i kept getting:</p>
<pre class="syntax-highlight:sh">
ERROR:  could not find gem svn2git locally or in a repository
</pre>
<p>and James Coglan doesn&#8217;t have github gems enabled on the repository. So I had to clone the repository and install the gem manually.<span id="more-57"></span></p>
<pre class="syntax-highlight:sh">
% git clone git://github.com/jcoglan/svn2git.git
Initialized empty Git repository in /Users/pjdavis/ruby/svn2git/.git/
remote: Counting objects: 46, done.
remote: Compressing objects: 100% (28/28), done.
remote: Total 46 (delta 14), reused 46 (delta 14)
Receiving objects: 100% (46/46), 6.79 KiB, done.
Resolving deltas: 100% (14/14), done.

% rake gem
(in /Users/pjdavis/ruby/svn2git)
/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/rake-0.8.3/lib/rake/gempackagetask.rb:13:Warning: Gem::manage_gems is deprecated and will be removed on or after March 2009.
mkdir -p pkg
WARNING:  no rubyforge_project specified
WARNING:  deprecated autorequire specified
Successfully built RubyGem
Name: svn2git
Version: 1.0.0
File: svn2git-1.0.0.gem
mv svn2git-1.0.0.gem pkg/svn2git-1.0.0.gem

% sudo gem install pkg/svn2git-1.0.0.gem
Successfully installed svn2git-1.0.0
1 gem installed
Installing ri documentation for svn2git-1.0.0...
Installing RDoc documentation for svn2git-1.0.0...
</pre>
<p>Sweet. So let&#8217;s try this thing out. Following the README file, I try</p>
<pre class="syntax-highlight:sh">
% svn2git http://svn.myserver.com/app
git: &#039;svn&#039; is not a git-command. See &#039;git --help&#039;.
git: &#039;svn&#039; is not a git-command. See &#039;git --help&#039;.
fatal: Not a git repository
fatal: Not a git repository
</pre>
<p>Well. Crap.</p>
<p>I do a bit more digging, and try to convert it the normal way, with git svn clone -s but get the same thing. As it turns out, according to <a href="http://fatpenguinblog.com/scott-rippee/missing-git-svn-on-os-x-leopard/" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://fatpenguinblog.com/scott-rippee/missing-git-svn-on-os-x-leopard/');">Fat Penguin</a>, when I installed git-core from MacPorts i didn&#8217;t use the +svn flag, so git-svn wasn&#8217;t installed with the rest of git. So here I go back MacPorts and</p>
<pre class="syntax-highlight:sh">
% sudo port deactivate git-core @1.6.0.2_2+doc
---&gt;  Deactivating git-core @1.6.0.2_2+docs
% sudo port install git-core +svn
....bunch o&#039; install crap....
---&gt;  Activating git-core @1.6.0.5_0+doc+svn
---&gt;  Cleaning git-core
</pre>
<p>and finally&#8230;</p>
<pre class="syntax-highlight:sh">
% svn2git http://svn.myserver.com/app
</pre>
<p>and BOOM! my svn repo is cloned into my current directory. Unfourtnatlly my current directory happend to be my projects directory. so i had app, config, db, etc&#8230; in the same folder as the rest of my projects. But after a little cleanup I had a git repository ready to work in, with my subversion logs still intact.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2009/01/09/using-svn2git-on-os-x-leopard/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Creative Commons Compatable Licenses</title>
		<link>http://dev.blog.apid.com/2008/12/06/creative-commons-compatable-licenses/</link>
		<comments>http://dev.blog.apid.com/2008/12/06/creative-commons-compatable-licenses/#comments</comments>
		<pubDate>Sun, 07 Dec 2008 00:21:26 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[Copyright]]></category>

		<category><![CDATA[creative commons]]></category>

		<category><![CDATA[licensing]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=49</guid>
		<description><![CDATA[I was clicking around on StackOverflow.com earlier, trying to fix a problem with an application I was working on, when i got interested in the Creative Commons license badge at the bottom. I clicked on it, and read over what you could do with it. The CC licenses offer a pretty good amount of freedom [...]]]></description>
			<content:encoded><![CDATA[<p>I was clicking around on StackOverflow.com earlier, trying to fix a problem with an application I was working on, when i got interested in the Creative Commons license badge at the bottom. I clicked on it, and read over what you could do with it. The CC licenses offer a pretty good amount of freedom to muck about with others content, which is good because it allows people to create derivative works that expand the human sphere of experience. I mean, without derivative works, you wouldn&#8217;t have <a href="http://en.wikipedia.org/wiki/Rosencrantz_and_Guildenstern_Are_Dead" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://en.wikipedia.org/wiki/Rosencrantz_and_Guildenstern_Are_Dead');">Rosencrantz and Guildenstern Are Dead</a> (best play evar!) </p>
<p>It turns out that StackOverflows content is licensed under Attribution-Share Alike 2.5 Generic, basically meaning that you can Distribute freely, and derive content(remix) from the work. </p>
<p>Anyway, I saw at the bottom there was an upgrade for the license (what can&#8217;t be upgraded these days) and was reading through the different verbiage on the 3.0 license. The only real change on the dumbed down page was adding &#8216;or a compatible&#8217; to the list of derivative works licensing requirements. Seems innocuous enough, however, in the legaleeze (e.g. Legal Code) &#8230; </p>
<blockquote><p>You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. </p></blockquote>
<p>Part (iv) looks kind of cool. It means if I found another license that was kinda like this that I liked better, I could license my derivative work under that. That&#8217;s very neat of Creative Commons, letting me change licenses. HOWEVER.</p>
<blockquote><p>&#8220;Creative Commons Compatible License&#8221; means a license that is listed at <a href="http://creativecommons.org/compatiblelicenses" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://creativecommons.org/compatiblelicenses');">http://creativecommons.org/compatiblelicenses</a> that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.</p></blockquote>
<p>So let&#8217;s check out <a href="http://creativecommons.org/compatiblelicenses" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://creativecommons.org/compatiblelicenses');">http://creativecommons.org/compatiblelicenses</a> and tell me how many licenses you see there. Yeah, none. So, if you use a Creative Commons license, your content is, for the foreseeable future, trapped in a Creative Commons License. </p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2008/12/06/creative-commons-compatable-licenses/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rails 2.2 and RubyGems</title>
		<link>http://dev.blog.apid.com/2008/11/26/rails-22-and-rubygems/</link>
		<comments>http://dev.blog.apid.com/2008/11/26/rails-22-and-rubygems/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 00:19:34 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[Ruby on Rails]]></category>

		<category><![CDATA[ruby]]></category>

		<category><![CDATA[rails]]></category>

		<category><![CDATA[rubygems]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=43</guid>
		<description><![CDATA[Rails 2.2 was released earlier today, so you may be tempted (as indeed I was) to install it right away and play with the new features (such as Array#forty_two ) Well, there are a few things you need to be aware of before you start the update process. One is you must have rubygems 1.3.1 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://pjforpresident.com/wp-content/uploads/2008/11/rails.png" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://pjforpresident.com/wp-content/uploads/2008/11/rails.png');"><img class="alignleft size-full wp-image-137" src="http://pjforpresident.com/wp-content/uploads/2008/11/rails.png" alt="" width="87" height="112" /></a><a href="http://weblog.rubyonrails.org/2008/11/21/rails-2-2-i18n-http-validators-thread-safety-jruby-1-9-compatibility-docs" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://weblog.rubyonrails.org/2008/11/21/rails-2-2-i18n-http-validators-thread-safety-jruby-1-9-compatibility-docs');">Rails 2.2</a> was released earlier today, so you may be tempted (as indeed I was) to install it right away and play with the new features (such as <a href="http://github.com/rails/rails/commit/e50530ca3ab5db53ebc74314c54b62b91b932389" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://github.com/rails/rails/commit/e50530ca3ab5db53ebc74314c54b62b91b932389');">Array#forty_two</a> ) Well, there are a few things you need to be aware of before you start the update process. One is you must have rubygems 1.3.1 installed to use rails. The default way to do this is with
<pre class="syntax-highlight:sh">sudo gem update --system</pre>
<p> However, there is a problem with updating rubygems this way when you don&#8217;t have <a href="http://rubyforge.org/forum/forum.php?forum_id=28071" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://rubyforge.org/forum/forum.php?forum_id=28071');">rubygems-update</a> installed. You can get around this by using
<pre class="syntax-highlight:sh">sudo gem install rubygems-update
sudo update_rubygems</pre>
<p>After updating rubygems, install rails 2.2 with
<pre class="syntax-highlight:sh">sudo gem install rails</pre>
<p> and you should have the new version of rails.</p>
<p>If you have an existing project, cd to that project directory and
<pre class="syntax-highlight:sh">rake rails:update </pre>
<p> to update your javascript, scripts, and configs. This should get you running on the new version of Ruby on Rails.</p>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2008/11/26/rails-22-and-rubygems/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Apache Virtual Hosts &#38; HAProxy</title>
		<link>http://dev.blog.apid.com/2008/09/16/apache-virtual-hosts-haproxy/</link>
		<comments>http://dev.blog.apid.com/2008/09/16/apache-virtual-hosts-haproxy/#comments</comments>
		<pubDate>Wed, 17 Sep 2008 00:18:05 +0000</pubDate>
		<dc:creator>pjdavis</dc:creator>
		
		<category><![CDATA[Hosting]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[apache]]></category>

		<category><![CDATA[haproxy]]></category>

		<category><![CDATA[virtual hosts]]></category>

		<guid isPermaLink="false">http://dev.blog.apid.com/?p=39</guid>
		<description><![CDATA[When checking pages with option httpchk against an apache server with virtual hosts setup, you have to remember to put the full domain to what you want to check. This is because if you don&#8217;t have the domain, Apache won&#8217;t know which virtual host to sent the request to, and you could get pages that [...]]]></description>
			<content:encoded><![CDATA[<p>When checking pages with <code>option httpchk</code> against an apache server with virtual hosts setup, you have to remember to put the full domain to what you want to check. This is because if you don&#8217;t have the domain, Apache won&#8217;t know which virtual host to sent the request to, and you could get pages that are UP showing DOWN, or worse, pages that are DOWN showing UP.</p>
<p>Another thing to remember is using <code>option forwardfor</code>, which passes the domain along with the request, so it will go to the right virtual host.<br />
<span id="more-39"></span><br />
Also, check out this video by 37signals about how they use HAProxy and <code>maxconn 1</code> to get around mongrel&#8217;s blocking requests.</p>
<p><a href="http://www.37signals.com/svn/posts/1073-nuts-bolts-haproxy" onclick="javascript:pageTracker._trackPageview('/outbound/article/http://www.37signals.com/svn/posts/1073-nuts-bolts-haproxy');">Nuts and Bolts: HAProxy</a></p>
<pre class="syntax-highlight:sh">
listen mysite 0.0.0.0:80
        mode http
        option forwardfor
        balance roundrobin
        option httpchk http://full.domain.name/check.htm
        server app1 192.168.1.1:80 check inter 2000 rise 2 fall 5 maxconn 1
        server app2 192.168.1.2:80 check inter 2000 rise 2 fall 5 maxconn 1
</pre>
]]></content:encoded>
			<wfw:commentRss>http://dev.blog.apid.com/2008/09/16/apache-virtual-hosts-haproxy/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
