<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" xml:lang="en" xml:base="http://www.etagwerker.com/wp-atom.php">
	<title type="text">Tech Notes From The Trenches</title>
	<subtitle type="text">Ernesto Tagwerker writes about technology</subtitle>

	<updated>2012-02-02T18:13:58Z</updated>

	<link rel="alternate" type="text/html" href="http://www.etagwerker.com" />
	<id>http://www.etagwerker.com/feed/atom/</id>
	

	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/etagwerker" /><feedburner:info uri="etagwerker" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>etagwerker</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[How to work with Git submodules and Git for Mac]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/I4nS4KzeTOg/" />
		<id>http://www.etagwerker.com/?p=1188</id>
		<updated>2012-02-02T18:13:58Z</updated>
		<published>2012-02-02T18:13:58Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="productivity tools" /><category scheme="http://www.etagwerker.com" term="software development" /><category scheme="http://www.etagwerker.com" term="unix consoles" />		<summary type="html"><![CDATA[As much as I love the new Github app (1.1.7) for Mac, it doesn't work with submodules. This has been confirmed by Github's tech support.

Hopefully they will graciously solve that problem soon. Until then, here is the workaround.
]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2012/02/how-to-work-with-git-submodules-and-git-for-mac/">&lt;p&gt;As much as I love the new &lt;a href="http://mac.github.com/" title="Github for Mac" target="_blank"&gt;Github app&lt;/a&gt; (1.1.7) for Mac, it doesn&amp;#8217;t work with submodules. This has been confirmed by Github&amp;#8217;s tech support.&lt;/p&gt;
&lt;p&gt;Hopefully they will graciously solve that problem soon. Until then, here is the &lt;strong&gt;workaround&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Whenever you &lt;strong&gt;modify anything&lt;/strong&gt; in a submodule, you will need to &lt;strong&gt;commit it&lt;/strong&gt; and &lt;strong&gt;push it&lt;/strong&gt;:&lt;/p&gt;
&lt;div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;$ &lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; ~&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;your-project&lt;br /&gt;
$ &lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; path&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;to&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;submodule&lt;br /&gt;
$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git commit&lt;/span&gt; . &lt;span style="color: #660033;"&gt;-m&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;'I changed X and Y because Z'&lt;/span&gt;&lt;br /&gt;
$ &lt;span style="color: #c20cb9; font-weight: bold;"&gt;git push&lt;/span&gt;&lt;br /&gt;
$ &lt;span style="color: #7a0874; font-weight: bold;"&gt;cd&lt;/span&gt; ~&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;your-project&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Once you&amp;#8217;ve done that, you can sync your main repository with Github for Mac.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;That&amp;#8217;s it!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For more information on Git, this is a useful page: &lt;a href="http://cheat.errtheblog.com/s/git" title="Git Cheat" target="_blank"&gt;$ cheat git&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/I4nS4KzeTOg" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2012/02/how-to-work-with-git-submodules-and-git-for-mac/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2012/02/how-to-work-with-git-submodules-and-git-for-mac/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2012/02/how-to-work-with-git-submodules-and-git-for-mac/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Upgrading from Leopard to Lion the painful way]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/hEces21Q9hk/" />
		<id>http://www.etagwerker.com/?p=1178</id>
		<updated>2012-01-31T15:18:23Z</updated>
		<published>2012-01-31T15:18:23Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="Ruby programming" /><category scheme="http://www.etagwerker.com" term="software engineering" /><category scheme="http://www.etagwerker.com" term="environments" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="ruby" /><category scheme="http://www.etagwerker.com" term="rubyisms" /><category scheme="http://www.etagwerker.com" term="software development" /><category scheme="http://www.etagwerker.com" term="unix consoles" />		<summary type="html"><![CDATA[The painful way:

Backup with TimeMachine
Upgrade to Snow Leopard
Upgrade to Lion
Restore essential data from TimeMachine]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2012/01/upgrading-from-leopard-to-lion-the-painful-way/">&lt;p&gt;The &lt;strong&gt;painful&lt;/strong&gt; way:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Backup&lt;/strong&gt; with TimeMachine&lt;/li&gt;
&lt;li&gt;Upgrade to &lt;strong&gt;Snow Leopard&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Upgrade to &lt;strong&gt;Lion&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore&lt;/strong&gt; essential data from TimeMachine&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The &lt;strong&gt;faster&lt;/strong&gt; way:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Backup&lt;/strong&gt; with TimeMachine&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;bootable Lion disk&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Erase everything&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Install&lt;/strong&gt; over your current disk&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Restore&lt;/strong&gt; from TimeMachine&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The painful way &lt;strong&gt;takes time&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Backing up 400GB takes time. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installing Snow Leopard&lt;/strong&gt; takes time. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Installing Lion&lt;/strong&gt; takes time.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s painful because you should &lt;strong&gt;re-install MySQL Server&lt;/strong&gt; and &lt;a title="Recover MySQL databases from TimeMachine" href="http://suburbia.org.uk/blog/2009/05/08/173824.html" target="_blank"&gt;recover your databases from the TimeMachine&lt;/a&gt; backup. &lt;/p&gt;
&lt;p&gt;You will need to &lt;strong&gt;re-install PostgreSQL&lt;/strong&gt;. Thankfully it&amp;#8217;s just:&lt;/p&gt;
&lt;div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&amp;nbsp; brew &lt;span style="color: #c20cb9; font-weight: bold;"&gt;install&lt;/span&gt; postgres&lt;br /&gt;
&amp;nbsp; initdb&lt;br /&gt;
&amp;nbsp; createuser postgres&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;It&amp;#8217;s painful because you will have to &lt;strong&gt;re-install XCode&lt;/strong&gt;. (or you&amp;#8217;ll run into &lt;a title="XCode, YU NO THERE?" href="https://github.com/mxcl/homebrew/issues/6496" target="_blank"&gt;an issue like this&lt;/a&gt; trying to install git)&lt;/p&gt;
&lt;p&gt;Installing XCode is &lt;strong&gt;not just&lt;/strong&gt; installing it using the App Store, it&amp;#8217;s also &lt;strong&gt;running Install XCode&lt;/strong&gt;. Talk about mixed messages.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s painful because the version of &lt;strong&gt;gcc&lt;/strong&gt; (LLVM based) won&amp;#8217;t be the one you want. Thankfully there is &lt;a title="OSX gcc Installer for Ruby" href="https://github.com/kennethreitz/osx-gcc-installer" target="_blank"&gt;a solution for that too&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Finally you can install &lt;a title="RVM" href="https://rvm.beginrescueend.com" target="_blank"&gt;RVM&lt;/a&gt; and the &lt;a title="Ruby" href="http://www.ruby-lang.org/en/" target="_blank"&gt;Ruby&lt;/a&gt; versions you want (1.9.2 and 1.9.3 for me)&lt;/p&gt;
&lt;p&gt;And you are &lt;strong&gt;all set&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/hEces21Q9hk" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2012/01/upgrading-from-leopard-to-lion-the-painful-way/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2012/01/upgrading-from-leopard-to-lion-the-painful-way/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2012/01/upgrading-from-leopard-to-lion-the-painful-way/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Be careful with stub! in RSpec]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/x3WXtU4QQ1w/" />
		<id>http://www.etagwerker.com/?p=1167</id>
		<updated>2012-01-18T14:59:09Z</updated>
		<published>2012-01-18T14:59:09Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="Ruby programming" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="ruby" /><category scheme="http://www.etagwerker.com" term="rubyisms" />		<summary type="html"><![CDATA[First of all, you should be careful with any call to stub.

You probably want to use stub just to simulate a behavior, one that you don't want to test in your current test.

For example: You may want to use stub with a remote service, an API call.
]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2012/01/be-careful-with-stub-in-rspec/">&lt;p&gt;First of all, you should be careful with &lt;strong&gt;any call&lt;/strong&gt; to stub.&lt;/p&gt;
&lt;p&gt;You probably want to use &lt;strong&gt;stub&lt;/strong&gt; just to simulate a behavior, one that you don&amp;#8217;t want to test in your current test.&lt;/p&gt;
&lt;p&gt;For example: You may want to use stub with a &lt;strong&gt;remote service&lt;/strong&gt;, an API call.&lt;/p&gt;
&lt;p&gt;Also, the method is stub not stub! (&lt;em&gt;at least in RSpec 2.6.0&lt;/em&gt;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;br /&gt;
This &lt;strong&gt;will not work&lt;/strong&gt; but &lt;strong&gt;will not fail&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&amp;nbsp; &lt;span style="color:#008000; font-style:italic;"&gt;# This won't work&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color:#6666ff; font-weight:bold;"&gt;DineroMailIpn::Client&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;any_instance&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;stub&lt;/span&gt;!&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:consulta_pago&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;and_return&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;@response_with_pays&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;This is what you are looking for.&lt;/p&gt;
&lt;div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&amp;nbsp; &lt;span style="color:#008000; font-style:italic;"&gt;# This will work&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color:#6666ff; font-weight:bold;"&gt;DineroMailIpn::Client&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;any_instance&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;stub&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:consulta_pago&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;.&lt;span style="color:#9900CC;"&gt;and_return&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;@response_with_pays&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;I don&amp;#8217;t know exactly &lt;em&gt;why&lt;/em&gt; stub! doesn&amp;#8217;t fail, &lt;strong&gt;but it wasn&amp;#8217;t doing what I was expecting&lt;/strong&gt; (to actually stub that method and return the mock object I wanted)&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/x3WXtU4QQ1w" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2012/01/be-careful-with-stub-in-rspec/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2012/01/be-careful-with-stub-in-rspec/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2012/01/be-careful-with-stub-in-rspec/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[The best solution to this warning: Giving a path to render :action is deprecated.]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/SDf62fwiJIY/" />
		<id>http://www.etagwerker.com/?p=1156</id>
		<updated>2012-01-05T19:05:29Z</updated>
		<published>2012-01-05T18:55:16Z</published>
		<category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="Ruby programming" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="ruby" /><category scheme="http://www.etagwerker.com" term="rubyisms" /><category scheme="http://www.etagwerker.com" term="web tips" />		<summary type="html"><![CDATA[I for one welcome this <strong>change</strong> and <strong>deprecation warning</strong>. ]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2012/01/the-best-solution-to-this-warning-giving-a-path-to-render-action-is-deprecated/">&lt;p&gt;I for one welcome this &lt;strong&gt;change&lt;/strong&gt; and &lt;strong&gt;deprecation warning&lt;/strong&gt;. It means that you should &lt;strong&gt;stop&lt;/strong&gt; &lt;strong&gt;using&lt;/strong&gt; this:&lt;/p&gt;
&lt;div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;render &lt;span style="color:#ff3333; font-weight:bold;"&gt;:action&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#ff3333; font-weight:bold;"&gt;:index&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;And, if necessary, you should &lt;strong&gt;start using&lt;/strong&gt; this:&lt;/p&gt;
&lt;div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;render &lt;span style="color:#ff3333; font-weight:bold;"&gt;:index&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The code is &lt;strong&gt;simpler&lt;/strong&gt; and &lt;strong&gt;prettier&lt;/strong&gt;. Don&amp;#8217;t use &lt;strong&gt;render :template&lt;/strong&gt;, unless you really need to.&lt;/p&gt;
&lt;p&gt;If you use &lt;strong&gt;vim&lt;/strong&gt;, you can use this search and replace string:&lt;/p&gt;
&lt;div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;:&lt;span style="color: #000000; font-weight: bold;"&gt;%&lt;/span&gt;s&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;render :action =&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;render &lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;g&lt;/div&gt;&lt;/div&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/SDf62fwiJIY" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2012/01/the-best-solution-to-this-warning-giving-a-path-to-render-action-is-deprecated/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2012/01/the-best-solution-to-this-warning-giving-a-path-to-render-action-is-deprecated/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2012/01/the-best-solution-to-this-warning-giving-a-path-to-render-action-is-deprecated/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Por qué deberías usar `git pull &#8211;rebase` en vez de `git pull` solo]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/sY9wUgnWxlQ/" />
		<id>http://www.etagwerker.com/?p=1137</id>
		<updated>2011-12-27T16:13:36Z</updated>
		<published>2011-12-27T16:13:36Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="high-quality IT solutions" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="unix consoles" />		<summary type="html"><![CDATA[<strong>git-merge</strong> nos genera un commit con <strong>todos los cambios</strong> entre el <strong>branch</strong> local y el <strong>branch</strong> que estamos bajando.
]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2011/12/por-que-deberias-usar-git-pull-rebase-en-vez-de-git-pull-solo/">&lt;p&gt;Al usar&lt;/p&gt;
&lt;div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&amp;nbsp; &lt;span style="color: #ff0000;"&gt;&amp;quot;git pull --rebase&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Git&lt;/strong&gt; utiliza &lt;strong&gt;git-rebase&lt;/strong&gt; en vez de &lt;strong&gt;git-merge&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;git-merge&lt;/strong&gt; nos genera un commit con &lt;strong&gt;todos los cambios&lt;/strong&gt; entre el &lt;strong&gt;branch&lt;/strong&gt; local y el &lt;strong&gt;branch&lt;/strong&gt; que estamos bajando.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;git-rebase&lt;/strong&gt; va hacia atrás, hasta donde los branches &lt;strong&gt;divergieron&lt;/strong&gt;, hace un &lt;strong&gt;reset&lt;/strong&gt; y empieza a aplicar los cambios &lt;strong&gt;progresivamente&lt;/strong&gt;, hasta llegar al último commit. Esto nos deja un log mucho &lt;strong&gt;más fácil de leer&lt;/strong&gt; que con el commit generado por &lt;strong&gt;git-merge&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Así vamos a dejar de ver tantos:&lt;/p&gt;
&lt;div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;&amp;nbsp; &lt;span style="color: #ff0000;"&gt;&amp;quot;Merge branch 'master' of github.com:etagwerker/whuffiebank&amp;quot;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Para más información: &lt;a href="http://progit.org/book/es/ch3-6.html" title="git-rebase @ Pro Git" target="_blank"&gt;http://progit.org/book/es/ch3-6.html&lt;/a&gt;&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/sY9wUgnWxlQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2011/12/por-que-deberias-usar-git-pull-rebase-en-vez-de-git-pull-solo/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2011/12/por-que-deberias-usar-git-pull-rebase-en-vez-de-git-pull-solo/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2011/12/por-que-deberias-usar-git-pull-rebase-en-vez-de-git-pull-solo/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Cómo usamos Pivotal Tracker en Ombu Shop]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/ahLdoiiPsYU/" />
		<id>http://www.etagwerker.com/?p=1121</id>
		<updated>2011-12-19T12:58:18Z</updated>
		<published>2011-12-19T12:48:39Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="entrepreneur life" /><category scheme="http://www.etagwerker.com" term="software engineering" /><category scheme="http://www.etagwerker.com" term="high-quality code" /><category scheme="http://www.etagwerker.com" term="high-quality IT solutions" /><category scheme="http://www.etagwerker.com" term="software development" />		<summary type="html"><![CDATA[Objetivo

Atender todas las tareas pendientes sin que se nos escape nada. En base a la velocidad del equipo, tener una idea de fechas de entrega de cada story.]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2011/12/como-usamos-pivotal-tracker-en-ombu-shop/">&lt;p&gt;Este es el &lt;em&gt;workflow&lt;/em&gt; que usamos en &lt;a title="Tu Propia Tienda Virtual" href="http://www.ombushop.com/" target="_blank"&gt;Ombu Shop&lt;/a&gt; para seguir las &lt;em&gt;stories&lt;/em&gt; con &lt;a title="Pivotal Tracker" href="http://pivotaltracker.com/" target="_blank"&gt;Pivotal Tracker&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Objetivo&lt;/h2&gt;
&lt;p&gt;Atender todas las tareas pendientes sin que se nos escape nada. En base a la &lt;em&gt;velocidad&lt;/em&gt; del equipo, tener una idea de fechas de entrega de cada &lt;em&gt;story&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;Prioridades&lt;/h2&gt;
&lt;p&gt;Se dividen por columnas. &lt;em&gt;Current&lt;/em&gt; es más importante que &lt;em&gt;Backlog.&lt;/em&gt; &lt;em&gt;Backlog&lt;/em&gt; más importante que &lt;em&gt;Icebox&lt;/em&gt;. Mientras más arriba en la columna se encuentre una &lt;em&gt;story&lt;/em&gt; más prioridad tiene.&lt;/p&gt;
&lt;h2&gt;1. Toda mejora, bug o tarea debe figurar como una &lt;em&gt;story&lt;/em&gt; en Pivotal&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Bug&lt;/em&gt;: Comportamiento inesperado del sistema. Un error según lo especificado por una &lt;em&gt;story&lt;/em&gt; previo.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Requester&lt;/em&gt;: La persona que pide la story. El &lt;em&gt;requester&lt;/em&gt; es el que finalmente deberá aceptar la &lt;em&gt;story&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Owner&lt;/em&gt;: La persona indicada para resolver la &lt;em&gt;story&lt;/em&gt;. El &lt;em&gt;requester&lt;/em&gt; elige al &lt;em&gt;owner&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;2. Antes de empezar, el &lt;em&gt;owner&lt;/em&gt; debe estimar la tarea&lt;/h2&gt;
&lt;p&gt;Para estimar se usan los palitos horizontales a la derecha de la &lt;em&gt;story&lt;/em&gt;. Más palitos, más complicado. Los &lt;em&gt;bugs&lt;/em&gt; &lt;strong&gt;no&lt;/strong&gt; se estiman.&lt;/p&gt;
&lt;p&gt;Ejemplo de una &lt;em&gt;story&lt;/em&gt;:&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.etagwerker.com/wp-content/uploads/2011/12/ejemplo-de-una-story1.png"&gt;&lt;img class="aligncenter size-full wp-image-1131" title="Ejemplo de una Story en Pivotal Tracker" src="http://www.etagwerker.com/wp-content/uploads/2011/12/ejemplo-de-una-story1.png" alt="" width="455" height="49" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;3. Una vez que el owner empieza debe darle &lt;em&gt;Start&lt;/em&gt; a la tarea&lt;/h2&gt;
&lt;p&gt;Esto sirve para calcular la &lt;em&gt;velocidad&lt;/em&gt; de nuestro equipo.&lt;/p&gt;
&lt;h2&gt;4. Una vez que termina debe darle &lt;em&gt;Finish&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Esto pondrá a la story lista para darle &lt;em&gt;Deliver&lt;/em&gt;.&lt;/p&gt;
&lt;h2&gt;5. Una vez que se sube a producción debe darle &lt;em&gt;Deliver&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;Solo se le dá &lt;em&gt;Deliver&lt;/em&gt; cuando está en producción.&lt;/p&gt;
&lt;h2&gt;8. Recién ahí el &lt;em&gt;requester&lt;/em&gt; debe darle &lt;em&gt;Accept&lt;/em&gt; o &lt;em&gt;Reject&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;El &lt;em&gt;requester&lt;/em&gt; va a ser siempre el responsable de aceptar la &lt;em&gt;story&lt;/em&gt;. Si uno le dá &lt;em&gt;Reject&lt;/em&gt; hay que ser &lt;strong&gt;lo más claro&lt;/strong&gt; y &lt;strong&gt;específico&lt;/strong&gt; posible para decir por qué no se acepta.&lt;/p&gt;
&lt;p&gt;Si la &lt;em&gt;story&lt;/em&gt; fue aceptada y estaba relacionada con un cliente, avisarle. Eso queda a cargo del &lt;em&gt;requester&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Si la &lt;em&gt;story&lt;/em&gt; fue rechazada, el &lt;em&gt;owner&lt;/em&gt; va a tener que darle &lt;em&gt;Restart&lt;/em&gt; (Ver #3) una vez que vuelva a trabajar sobre la tarea.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/ahLdoiiPsYU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2011/12/como-usamos-pivotal-tracker-en-ombu-shop/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2011/12/como-usamos-pivotal-tracker-en-ombu-shop/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2011/12/como-usamos-pivotal-tracker-en-ombu-shop/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Rails 3.1 and PostgreSQL, &#8220;Please install the Postgres adapter&#8221; hell]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/2qXwjoE-z5I/" />
		<id>http://www.etagwerker.com/?p=1113</id>
		<updated>2011-12-07T23:07:44Z</updated>
		<published>2011-12-07T23:07:44Z</published>
		<category scheme="http://www.etagwerker.com" term="Uncategorized" />		<summary type="html"><![CDATA[I just lost an hour with this error: 1Please install the postgres adapter: `gem install activerecord-postgres-adapter` &#40;cannot load such file -- active_record/connection_adapters/postgres_adapter&#41; &#40;RuntimeError&#41; I had to google a lot until I found the answer here, on Matt&#8217;s blog: &#8220;Please install the postgres adapter&#8221; As usual, it was a stupid mistake in the database.yml: 12345development: &#160; [...]]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2011/12/rails-3-1-and-postgresql-please-install-the-postgres-adapter-hell/">&lt;p&gt;I just lost an hour with this error:&lt;/p&gt;
&lt;div class="codecolorer-container ruby blackboard" style="border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;Please install the postgres adapter: &lt;span style="color:#996600;"&gt;`gem install activerecord-postgres-adapter`&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;cannot &lt;span style="color:#CC0066; font-weight:bold;"&gt;load&lt;/span&gt; such file &lt;span style="color:#006600; font-weight:bold;"&gt;--&lt;/span&gt; active_record&lt;span style="color:#006600; font-weight:bold;"&gt;/&lt;/span&gt;connection_adapters&lt;span style="color:#006600; font-weight:bold;"&gt;/&lt;/span&gt;postgres_adapter&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color:#CC00FF; font-weight:bold;"&gt;RuntimeError&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;I had to &lt;strong&gt;google&lt;/strong&gt; a lot until I found the answer here, on Matt&amp;#8217;s blog: &lt;a href="http://www.mriddle.com/2011/06/05/please-install-the-postgres-adapter" title="Please install the postgres adapter" target="_blank"&gt;&amp;#8220;Please install the postgres adapter&amp;#8221;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As usual, it was a &lt;strong&gt;stupid mistake&lt;/strong&gt; in the &lt;em&gt;database.yml&lt;/em&gt;:&lt;/p&gt;
&lt;div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;development:&lt;br /&gt;
&amp;nbsp; adapter: postgres&lt;br /&gt;
&amp;nbsp; database: ombu_development&lt;br /&gt;
&amp;nbsp; pool: &lt;span style="color:#006666;"&gt;5&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; timeout: &lt;span style="color:#006666;"&gt;5000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;The adapter is called &amp;#8220;&lt;strong&gt;postgresql&lt;/strong&gt;&amp;#8221; not &amp;#8220;&lt;strong&gt;postgres&lt;/strong&gt;&amp;#8221;&lt;/p&gt;
&lt;div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"&gt;&lt;table cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"&gt;&lt;div&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;5&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"&gt;development:&lt;br /&gt;
&amp;nbsp; adapter: postgresql&lt;br /&gt;
&amp;nbsp; database: ombu_development&lt;br /&gt;
&amp;nbsp; pool: &lt;span style="color:#006666;"&gt;5&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; timeout: &lt;span style="color:#006666;"&gt;5000&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;I hope this &lt;strong&gt;saves you time&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.etagwerker.com%2F2011%2F12%2Frails-3-1-and-postgresql-please-install-the-postgres-adapter-hell%2F&amp;amp;title=Rails%203.1%20and%20PostgreSQL%2C%20%26%238220%3BPlease%20install%20the%20Postgres%20adapter%26%238221%3B%20hell" id="wpa2a_2"&gt;Share&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/2qXwjoE-z5I" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2011/12/rails-3-1-and-postgresql-please-install-the-postgres-adapter-hell/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2011/12/rails-3-1-and-postgresql-please-install-the-postgres-adapter-hell/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2011/12/rails-3-1-and-postgresql-please-install-the-postgres-adapter-hell/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Yet another good reason to keep a gemset per project]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/vSPT1Sbmfc0/" />
		<id>http://www.etagwerker.com/?p=1109</id>
		<updated>2011-12-05T14:22:37Z</updated>
		<published>2011-12-05T14:22:37Z</published>
		<category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="Ruby programming" /><category scheme="http://www.etagwerker.com" term="software engineering" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="ruby" /><category scheme="http://www.etagwerker.com" term="rubyisms" /><category scheme="http://www.etagwerker.com" term="unix consoles" />		<summary type="html"><![CDATA[So, if you still keep all your gems in 'system', you should seriously consider switching to rvm gemsets per project. ]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2011/12/yet-another-good-reason-to-keep-a-gemset-per-project/">&lt;p&gt;I &lt;strong&gt;love&lt;/strong&gt; &lt;a title="Ruby Version Manager" href="https://rvm.beginrescueend.com/" target="_blank"&gt;rvm&lt;/a&gt;. It lets you keep your gems organized per project. The combination of &lt;strong&gt;.rvmrc&lt;/strong&gt; and &lt;strong&gt;gemset&lt;/strong&gt; is great for &lt;strong&gt;keeping things organized&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Yet another good reason is &lt;strong&gt;performance&lt;/strong&gt;! (From @tenderlove&amp;#8217;s &lt;a title="Gems and Rails load time" href="http://tenderlovemaking.com/2011/11/30/psa-the-number-of-gems-installed-on-your-system-can-impact-rails-boot-time/" target="_blank"&gt;blog post&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;So, if you still keep all your gems in &amp;#8216;system&amp;#8217;, you should &lt;strong&gt;seriously&lt;/strong&gt; consider switching to &lt;strong&gt;rvm gemsets&lt;/strong&gt; per project.&lt;/p&gt;
&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/vSPT1Sbmfc0" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2011/12/yet-another-good-reason-to-keep-a-gemset-per-project/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2011/12/yet-another-good-reason-to-keep-a-gemset-per-project/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2011/12/yet-another-good-reason-to-keep-a-gemset-per-project/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Pusher: Presence channels are private channels]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/Bo7S65Gk1aQ/" />
		<id>http://www.etagwerker.com/?p=1104</id>
		<updated>2011-11-28T13:42:17Z</updated>
		<published>2011-11-28T13:42:17Z</published>
		<category scheme="http://www.etagwerker.com" term="developer tools" /><category scheme="http://www.etagwerker.com" term="programming" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="javascript" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="software development" /><category scheme="http://www.etagwerker.com" term="Web Sockets" />		<summary type="html"><![CDATA[Channels prefixed with &#8216;presence-&#8217; don&#8217;t need to be also prefixed with &#8216;private-&#8217; From the Pusher docs: Presence channels build on the security of Private channels and expose the additional feature of an awareness of who is subscribed to that channel.  So, don&#8217;t bother adding the &#8216;private-&#8217; prefix to a &#8216;presence-&#8217; prefixed channel because it will [...]]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2011/11/pusher-presence-channels-are-private-channels/">&lt;p&gt;Channels prefixed with&lt;strong&gt; &amp;#8216;presence-&amp;#8217;&lt;/strong&gt; don&amp;#8217;t need to be also prefixed with&lt;strong&gt; &amp;#8216;private-&amp;#8217;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;From the &lt;a title="Pusher Client API" href="http://pusher.com/docs/client_api_guide/client_channels#subscribe-presence-channels" target="_blank"&gt;Pusher docs&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;Presence channels build on the security of Private channels and expose the additional feature of an awareness of who is subscribed to that channel. &lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;So, don&amp;#8217;t bother adding the&lt;strong&gt; &amp;#8216;private-&amp;#8217;&lt;/strong&gt; prefix to a&lt;strong&gt; &amp;#8216;presence-&amp;#8217;&lt;/strong&gt; prefixed channel because it will be a &lt;strong&gt;waste of time&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.etagwerker.com%2F2011%2F11%2Fpusher-presence-channels-are-private-channels%2F&amp;amp;title=Pusher%3A%20Presence%20channels%20are%20private%20channels" id="wpa2a_4"&gt;Share&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/Bo7S65Gk1aQ" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2011/11/pusher-presence-channels-are-private-channels/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2011/11/pusher-presence-channels-are-private-channels/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2011/11/pusher-presence-channels-are-private-channels/</feedburner:origLink></entry>
		<entry>
		<author>
			<name>etagwerker</name>
						<uri>http://etagwerker.com</uri>
					</author>
		<title type="html"><![CDATA[Having a scope called `parents` breaks acts_as_nested_set]]></title>
		<link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/etagwerker/~3/fgIj81qIdfU/" />
		<id>http://www.etagwerker.com/?p=1093</id>
		<updated>2011-11-27T05:38:50Z</updated>
		<published>2011-11-25T19:06:35Z</published>
		<category scheme="http://www.etagwerker.com" term="open source" /><category scheme="http://www.etagwerker.com" term="Ruby programming" /><category scheme="http://www.etagwerker.com" term="web programming" /><category scheme="http://www.etagwerker.com" term="nuby" /><category scheme="http://www.etagwerker.com" term="rails" /><category scheme="http://www.etagwerker.com" term="ruby" /><category scheme="http://www.etagwerker.com" term="rubyisms" />		<summary type="html"><![CDATA[I started to get this weird error with my categories today. It was sort of ridiculous because I had only changed my scope name from &#8216;parent&#8217; to &#8216;parents&#8217;! That was the problem. acts_as_nested_set, v1.4.4, breaks if you name a scope &#8216;parents.&#8217; You will get an error like this: undefined method `const_defined?&#8217; for #&#60;Category:0x112ccfdb8&#62;]]></summary>
		<content type="html" xml:base="http://www.etagwerker.com/2011/11/having-a-scope-called-parents-breaks-acts_as_nested_set/">&lt;p&gt;I started to get this weird error with my categories today.&lt;/p&gt;
&lt;p&gt;It was sort of ridiculous because I had only changed my scope name from &amp;#8216;parent&amp;#8217; to &amp;#8216;parents&amp;#8217;!&lt;/p&gt;
&lt;p&gt;That was the problem.&lt;/p&gt;
&lt;p&gt;acts_as_nested_set, v1.4.4, breaks if you name a scope &amp;#8216;parents.&amp;#8217;&lt;/p&gt;
&lt;p&gt;You will get an error like this:&lt;/p&gt;
&lt;p&gt;undefined method `const_defined?&amp;#8217; for #&amp;lt;Category:0x112ccfdb8&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fwww.etagwerker.com%2F2011%2F11%2Fhaving-a-scope-called-parents-breaks-acts_as_nested_set%2F&amp;amp;title=Having%20a%20scope%20called%20%60parents%60%20breaks%20acts_as_nested_set" id="wpa2a_6"&gt;Share&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/etagwerker/~4/fgIj81qIdfU" height="1" width="1"/&gt;</content>
		<link rel="replies" type="text/html" href="http://www.etagwerker.com/2011/11/having-a-scope-called-parents-breaks-acts_as_nested_set/#comments" thr:count="0" />
		<link rel="replies" type="application/atom+xml" href="http://www.etagwerker.com/2011/11/having-a-scope-called-parents-breaks-acts_as_nested_set/feed/atom/" thr:count="0" />
		<thr:total>0</thr:total>
	<feedburner:origLink>http://www.etagwerker.com/2011/11/having-a-scope-called-parents-breaks-acts_as_nested_set/</feedburner:origLink></entry>
	</feed>

