<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wylie</title>
	<atom:link href="http://www.wyliethomas.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wyliethomas.com/blog</link>
	<description>web consultant.developer.angler</description>
	<lastBuildDate>Wed, 07 Dec 2011 18:14:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>RVM, Rake and Cron on Ubuntu</title>
		<link>http://www.wyliethomas.com/blog/2011/08/24/rvm-rake-and-cron-on-ubuntu/</link>
		<comments>http://www.wyliethomas.com/blog/2011/08/24/rvm-rake-and-cron-on-ubuntu/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 20:43:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=175</guid>
		<description><![CDATA[Tennnngh! I read countless blog posts, tried numerous approaches that I found and rebuilt the server more than a couple times. And finally I found what the missing piece was for getting a rake command to run in cron with rvm.
Most of the results I found (on stackoverflow) flagged the solution as adding the path [...]]]></description>
			<content:encoded><![CDATA[<p>Tennnngh! I read countless blog posts, tried numerous approaches that I found and rebuilt the server more than a couple times. And finally I found what the missing piece was for getting a rake command to run in cron with rvm.</p>
<p>Most of the results I found (on stackoverflow) flagged the solution as adding the path to your rvm in your line item in crontab. Something like /home/username/.rvm/gems/rake my_awesome_task&#8230; etc. I tried every variation of that I could think of and got the same results.</p>
<p> I dont use cron every day so this was a revelation to me. I found out that you can set variables, environment variables in your crontab file.</p>
<p>So the solution was very simple. Edit the crontab like this.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">crontab -e</div>
</li>
</ol>
</div>
<p>Then at the top of the file (mine is the first line)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">SHELL = /home/wylie/.<span class="me1">rvm</span>/bin/rvm-shell</div>
</li>
</ol>
</div>
<p>Then my commands:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">* <span class="nu0">4</span> * * * /bin/bash -l -c <span class="st0">&#8216;cd /path/to/app &amp;&amp; RAILS_ENV=production rake mytask &#8211;silent&#8217;</span></div>
</li>
</ol>
</div>
<p>Done.</p>
<p>Hope that saves someone some time.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2011/08/24/rvm-rake-and-cron-on-ubuntu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>AWS Recipe</title>
		<link>http://www.wyliethomas.com/blog/2011/08/24/aws-recipe/</link>
		<comments>http://www.wyliethomas.com/blog/2011/08/24/aws-recipe/#comments</comments>
		<pubDate>Wed, 24 Aug 2011 20:27:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=168</guid>
		<description><![CDATA[Seems Im not the only one who has had problems with ruby 1.9.2 and rvm on my Ubuntu servers. This recipe so far has worked great for every project running on it so far. Im not taking credit for all of it. Its a compilation of things that I have found on other blogs (too [...]]]></description>
			<content:encoded><![CDATA[<p>Seems Im not the only one who has had problems with ruby 1.9.2 and rvm on my Ubuntu servers. This recipe so far has worked great for every project running on it so far. Im not taking credit for all of it. Its a compilation of things that I have found on other blogs (too many to credit).</p>
<p>Use this AMI<br />
ami-a403f7cd</p>
<p>Then add ssh, http and https to the default security group. Now you can shell in</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get update</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get build-essential</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install curl git-core gitk git-gui</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install libcurl4-openssl-dev</div>
</li>
<li class="li2">
<div class="de2">sudo apt-get install vim</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install rake</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install mysql-server mysql-client</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install libmysql-ruby libmysqlclient-dev</div>
</li>
</ol>
</div>
<p>Now for the RVM stuff</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get install ruby</div>
</li>
<li class="li1">
<div class="de1">bash &lt; &lt;<span class="br0">&#40;</span> curl https://rvm.<span class="me1">beginrescueend</span>.<span class="me1">com</span>/releases/rvm-install-head <span class="br0">&#41;</span></div>
</li>
</ol>
</div>
<p>EDIT:: RVM has changed the install address. Check their website to get the latest bash install command</p>
<p>Open .bashrc and replace </p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span> -z <span class="st0">&quot;$PS1&quot;</span> <span class="br0">&#93;</span> &amp;&amp; <span class="kw2">return</span></div>
</li>
</ol>
</div>
<p>with</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> -n <span class="st0">&quot;$PS1&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span>; <span class="kw1">then</span></div>
</li>
</ol>
</div>
<p>Then at the end of the file </p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">if</span> <span class="br0">&#91;</span><span class="br0">&#91;</span> -s <span class="re0">$HOME</span>/.<span class="me1">rvm</span>/scripts/rvm <span class="br0">&#93;</span><span class="br0">&#93;</span> ; <span class="kw1">then</span> source <span class="re0">$HOME</span>/.<span class="me1">rvm</span>/scripts/rvm ; fi</div>
</li>
<li class="li1">
<div class="de1">fi</div>
</li>
</ol>
</div>
<p>You should close the terminal and open a new one then enter</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">rvm notes</div>
</li>
</ol>
</div>
<p>You should see a bunch of options.</p>
<p>Now we need to add a bunch of stuff </p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo aptitude install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3<span class="nu0">-0</span> libsqlite3-dev sqlite3 libreadline-dev libxml2-dev git-core subversion autoconf </div>
</li>
</ol>
</div>
<p>Now we can run rvm list known and we should see a list of rubies</p>
<p>Time to upgrade our ruby</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">rvm install <span class="nu0">1.9</span><span class="nu0">.2</span>-head</div>
</li>
<li class="li1">
<div class="de1">rvm &#8211;default <span class="nu0">1.9</span><span class="nu0">.2</span>-head</div>
</li>
</ol>
</div>
<p>EDIT:: RVM has changed a bit since I wrote this. Be sure to read their instructions to be familiar with the differences. Setting default has now changed to </p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">rvm use <span class="nu0">1.9</span><span class="nu0">.2</span>-head &#8211;default</div>
</li>
</ol>
</div>
<p>Don&#8217;t forget the &#8211;default or your git hooks will never work</p>
<p>Lets get rails in there to test it out</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">gem install rails</div>
</li>
</ol>
</div>
<p>Try it out</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">rails new testing</div>
</li>
</ol>
</div>
<p>Should have created a new rails app.</p>
<p>Now we need to get our project from the git repo. But we need to give them a pub key</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">cd ~/</div>
</li>
<li class="li1">
<div class="de1">ssh-keygen -t rsa</div>
</li>
</ol>
</div>
<p>(defaults, no passphrase)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">cat .<span class="me1">ssh</span>/id_rsa.<span class="me1">pub</span></div>
</li>
</ol>
</div>
<p>copy and paste that into the repo keys on your repo</p>
<p>Now set up the site</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">cd /var</div>
</li>
<li class="li1">
<div class="de1">sudo chgrp -R ubuntu www</div>
</li>
<li class="li1">
<div class="de1">sudo chown -R ubuntu www</div>
</li>
<li class="li1">
<div class="de1">cd www</div>
</li>
<li class="li2">
<div class="de2">git clone <span class="br0">&#91;</span>clone address<span class="br0">&#93;</span> <span class="br0">&#91;</span>dir name you want<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">cd <span class="br0">&#91;</span>new dir name<span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">bundle install</div>
</li>
</ol>
</div>
<p>cool, now lets set up the webserver</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">gem install passenger</div>
</li>
<li class="li1">
<div class="de1">passenger-install-apache2-<span class="kw1">module</span></div>
</li>
</ol>
</div>
<p>follow the instructions</p>
<p>Now we need to set up our git hooks for a heroku like deployment<br />
shell into the server then cd to /var/www/[your app]/.git/hooks<br />
copy the post-receive.sample to just post-receive<br />
chmod it to 777<br />
then edit it like so</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">#!/bin/bash</span></div>
</li>
<li class="li1">
<div class="de1">APP_PATH=/var/www/myapp</div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># Production environment</span></div>
</li>
<li class="li1">
<div class="de1">export RAILS_ENV=<span class="st0">&quot;production&quot;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="co1"># This loads RVM into a shell session. Uncomment if you&#8217;re using RVM system wide.</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1"># [[ -s &quot;/usr/local/lib/rvm&quot; ]] &amp;&amp; . &quot;/usr/local/lib/rvm&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="br0">&#91;</span><span class="br0">&#91;</span> -s <span class="st0">&quot;/home/ubuntu/.rvm/scripts/rvm&quot;</span> <span class="br0">&#93;</span><span class="br0">&#93;</span> &amp;&amp; source <span class="st0">&quot;/home/ubuntu/.rvm/scripts/rvm&quot;</span> <span class="co1"># Load RVM into a shell session *as a function*</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot;*******************************************&quot;</span></div>
</li>
<li class="li2">
<div class="de2">echo <span class="st0">&quot; &nbsp; &nbsp;Deploying [APP NAME] to live server &nbsp; &nbsp; &nbsp;&quot;</span></div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot;*******************************************&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">exit_with_error<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; echo <span class="st0">&quot;[DEPLOY] !!!!!!!!!!!!!!!!!!!! An error has occurred !!!!!!!!!!!!!!!!!!!!!!!&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="kw3">exit</span> <span class="nu0">1</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">cd $<span class="br0">&#123;</span>APP_PATH<span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">env -i git add .</div>
</li>
<li class="li2">
<div class="de2"><span class="me1">env</span> -i git reset &#8211;hard || exit_with_error</div>
</li>
<li class="li1">
<div class="de1">env -i git pull origin master</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot;[DEPLOY] &#8211; &nbsp;* Running bundle&quot;</span></div>
</li>
<li class="li1">
<div class="de1">bundle install &#8211;deployment &#8211;without development test || exit_with_error</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot;[DEPLOY] &#8211; &nbsp;* Migrating database&quot;</span></div>
</li>
<li class="li1">
<div class="de1">bundle <span class="kw3">exec</span> rake db:migrate || exit_with_error</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">echo <span class="st0">&quot;[DEPLOY] &#8211; &nbsp;* Successfully deployed application to live server&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot;[DEPLOY] &#8211; * Restarting application&quot;</span></div>
</li>
<li class="li1">
<div class="de1">mkdir -<span class="kw3">p</span> tmp/</div>
</li>
<li class="li1">
<div class="de1">touch tmp/restart.<span class="me1">txt</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot;*******************************************&quot;</span></div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot; &nbsp; &nbsp;Successfully deployed [APP NAME] &nbsp; &nbsp; &nbsp; &quot;</span></div>
</li>
<li class="li1">
<div class="de1">echo <span class="st0">&quot;*******************************************&quot;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
</ol>
</div>
<p>Then, in the .git/config file add this to stop all those pesky warnings</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#91;</span>receive<span class="br0">&#93;</span> denyCurrentBranch = <span class="kw2">false</span></div>
</li>
</ol>
</div>
<p>Now we need to create a DB</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">mysql -u root -<span class="kw3">p</span></div>
</li>
</ol>
</div>
<p>create database [whatever you need here];</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw3">exit</span></div>
</li>
</ol>
</div>
<p>Lets add the new server as a remote for your git</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">git remote add live ubuntu@<span class="br0">&#91;</span>some ip<span class="br0">&#93;</span>:/var/www/<span class="br0">&#91;</span>app name<span class="br0">&#93;</span></div>
</li>
</ol>
</div>
<p>I think were ready for a push. In your project update the config/database.yml and change the production creds to what you just created.<br />
commit that change and push it to origin</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">git push origin master</div>
</li>
</ol>
</div>
<p>And now push it to live</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">git push live master</div>
</li>
</ol>
</div>
<p>tada.. git push deployment with gem updates and migrations</p>
<p>Just one thing left&#8230; database backups to S3. Thats for another post.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2011/08/24/aws-recipe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PayPal Recurring Payments with ActiveMerchant</title>
		<link>http://www.wyliethomas.com/blog/2011/02/22/paypal-recurring-payments-with-activemerchant/</link>
		<comments>http://www.wyliethomas.com/blog/2011/02/22/paypal-recurring-payments-with-activemerchant/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 08:38:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PayPal]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=164</guid>
		<description><![CDATA[I found several pieces to the puzzle but it took me a while to put it all together. After I got it working I thought I should write it down in case I needed to remember what I did or maybe someone else would find it useful.
The first thing you should know is that ActiveMerchant [...]]]></description>
			<content:encoded><![CDATA[<p>I found several pieces to the puzzle but it took me a while to put it all together. After I got it working I thought I should write it down in case I needed to remember what I did or maybe someone else would find it useful.</p>
<p>The first thing you should know is that ActiveMerchant does not support recurring payments with PayPal. But Raymond Law generously made a fork that fixes this. I couldnt get the fix as a gem so I just installed it as a plug in. <a href="https://github.com/rayvinly/active_merchant/">https://github.com/rayvinly/active_merchant/</a></p>
<p>Then I went to the Railscasts on PayPal with ActiveMerchant. <a href="http://railscasts.com/episodes/146-paypal-express-checkout">http://railscasts.com/episodes/146-paypal-express-checkout</a></p>
<p>In my config/environments I made a slight change from the Railscasts example:</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">config.<span class="me1">after_initialize</span> <span class="kw1">do</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="re2">ActiveMerchant::Billing::Base</span>.<span class="me1">mode</span> = <span class="re3">:test</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; paypal_options = <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re3">:login</span> =&gt; <span class="st0">&quot;mysandboxlogingoeshere&quot;</span>,</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="re3">:password</span> =&gt; <span class="st0">&quot;MYSANDBOXAPIPASSWORD&quot;</span>,</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="re3">:signature</span> =&gt; <span class="st0">&quot;SANDBOXAPI&quot;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ::STANDARD_GATEWAY = <span class="re2">ActiveMerchant::Billing::PaypalGateway</span>.<span class="me1">new</span><span class="br0">&#40;</span>paypal_options<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; ::EXPRESS_GATEWAY = <span class="re2">ActiveMerchant::Billing::PaypalExpressGateway</span>.<span class="me1">new</span><span class="br0">&#40;</span>paypal_options<span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">::EXPRESS_RECURRING_GATEWAY = <span class="re2">ActiveMerchant::Billing::PaypalExpressRecurringGateway</span>.<span class="me1">new</span><span class="br0">&#40;</span>paypal_options<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>I made a registration controller:<br />
rails g controller index new checkout complete</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">def</span> checkout</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;response = EXPRESS_RECURRING_GATEWAY.<span class="me1">setup_agreement</span><span class="br0">&#40;</span><span class="re3">:description</span> =&gt; description, return_url =&gt; registration_complete_url, <span class="re3">:cancel_return_url</span> =&gt; registration_new_url<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; redirect_to EXPRESS_RECURRING_GATEWAY.<span class="me1">redirect_url_for</span><span class="br0">&#40;</span>response.<span class="me1">token</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2"><span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">def</span> complete</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;token = params<span class="br0">&#91;</span><span class="re3">:token</span><span class="br0">&#93;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;response = EXPRESS_RECURRING_GATEWAY.<span class="me1">create_profile</span><span class="br0">&#40;</span>token, <span class="re3">:description</span> =&gt; description, <span class="re3">:start_date</span> =&gt; start_date, <span class="re3">:frequency</span> =&gt; frequency_in_months, <span class="re3">:amount</span> =&gt; amount_in_dollars, <span class="re3">:auto_bill_outstanding</span> =&gt; <span class="kw2">true</span><span class="br0">&#41;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">if</span> response. <span class="me1">success</span>?</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">#handle success</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;<span class="kw1">else</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co1">#handle failure</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;<span class="kw1">end</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">end</span></div>
</li>
</ol>
</div>
<p>You can figure out your own way to handle the values and details of the transaction. The Date format can be set with</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">start_date = <span class="kw4">Time</span>.<span class="me1">now</span></div>
</li>
</ol>
</div>
<p>The amount can be just a number. Dont put it in quotes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2011/02/22/paypal-recurring-payments-with-activemerchant/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>paginating multiple collections with will_paginate</title>
		<link>http://www.wyliethomas.com/blog/2010/10/13/paginating-multiple-collections-with-will_paginate/</link>
		<comments>http://www.wyliethomas.com/blog/2010/10/13/paginating-multiple-collections-with-will_paginate/#comments</comments>
		<pubDate>Wed, 13 Oct 2010 17:01:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=150</guid>
		<description><![CDATA[Use case: I have a page with multiple post. Each post has multiple comments. I want to use the infinite_scroll jquery plugin to &#8220;paginate&#8221; through the comments and post. 
Admittedly, nested pagination makes little sense until you think about it in context of having multiple infinite scrolls on a page.
Here are the bare bones.
My Post [...]]]></description>
			<content:encoded><![CDATA[<p>Use case: I have a page with multiple post. Each post has multiple comments. I want to use the infinite_scroll jquery plugin to &#8220;paginate&#8221; through the comments and post. </p>
<p>Admittedly, nested pagination makes little sense until you think about it in context of having multiple infinite scrolls on a page.</p>
<p>Here are the bare bones.</p>
<p>My Post model:<br />
<code>def comment_pages(comment_page = 1)<br />
   self.comments.paginate( :page => comment_page, :per_page => 5 )<br />
end</code></p>
<p>My View (haml version):<br />
<code>#comment_pagination= will_paginate(comments, :param_name => "comment_page_#{post.id}")</code></p>
<p>Now i have unique list that infinite scroll can use to paginate through.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2010/10/13/paginating-multiple-collections-with-will_paginate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting up a new dev environment</title>
		<link>http://www.wyliethomas.com/blog/2010/07/02/setting-up-a-new-dev-environment/</link>
		<comments>http://www.wyliethomas.com/blog/2010/07/02/setting-up-a-new-dev-environment/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 05:40:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=139</guid>
		<description><![CDATA[There are so many things i forget when setting up a new workstation. This time I took notes so I wont forget.
After installing VMWare fusion3 on my macbook pro I download the latest Ubuntu iso and start a new VM with it. I keep my work on TrueCrypt partitions. Then work my way down this [...]]]></description>
			<content:encoded><![CDATA[<p>There are so many things i forget when setting up a new workstation. This time I took notes so I wont forget.</p>
<p>After installing VMWare fusion3 on my macbook pro I download the latest Ubuntu iso and start a new VM with it. I keep my work on TrueCrypt partitions. Then work my way down this list.</p>
<p><strong>For starters</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get install git-core gitk git-gui</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install subversion</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install ssh-client</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install ssh-server</div>
</li>
<li class="li2">
<div class="de2">sudo apt-get install vim</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install rake</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install libxml2-dev</div>
</li>
</ol>
</div>
<p>Then install sphinx<br />
http://freelancing-god.github.com/ts/en/installing_sphinx.html<br />
./configure, make, sudo make install</p>
<p><strong>VMWare Tools</strong><br />
Turn off shared folders (i always get failures when i dont)<br />
From the virtual machine menu, select install VMTools. Open the virtual DVD and put the zip file on the desktop and extract it there.<br />
From a terminal cd Desktop/vmware&#8230;<br />
Then sudo ./vmware-tools-install.pl<br />
Enter key for all the defaults. Then run the networking stop and start commands at the end of the instructions.</p>
<p><strong>Install Ruby</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get install ruby-full build-essential</div>
</li>
</ol>
</div>
<p>or</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo aptitude install ruby build-essential libopenssl-ruby ruby1<span class="nu0">.8</span>-dev</div>
</li>
</ol>
</div>
<p><strong>Install Apache</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get install apache2 apache2-mpm-prefork apache2-prefork-dev</div>
</li>
</ol>
</div>
<p><strong>Install Ruby Gems</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get install rubygems</div>
</li>
<li class="li1">
<div class="de1">export PATH=/var/lib/gems/<span class="nu0">1.8</span>/bin:$PATH</div>
</li>
</ol>
</div>
<p><strong>Install Rails</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo gem install rails</div>
</li>
</ol>
</div>
<p><strong>Install MySQL</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get install mysql-server mysql-client</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install libmysql-ruby libmysqlclient-dev</div>
</li>
<li class="li1">
<div class="de1">sudo gem install mysql</div>
</li>
</ol>
</div>
<p><strong>Install Passenger</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo gem install passenger</div>
</li>
<li class="li1">
<div class="de1">sudo apt-get install apache2-threaded-dev libapr1-dev libaprutil1-dev</div>
</li>
<li class="li1">
<div class="de1">sudo /var/lib/gems/<span class="nu0">1.8</span>/bin/passenger-install-apache2-<span class="kw1">module</span></div>
</li>
</ol>
</div>
<p>[follow passenger instructions]</p>
<p><strong>VMWare Network connections</strong><br />
Since FF is the default browser you need to make a small change to browse the web.<br />
Open FF and put about:config in the URL. Then filter for ipv6 and set false to true and restart FF. You should be online.</p>
<p><strong>Shared Folders</strong><br />
Use TrueCrypt to keep your work on and share /Volumes/[your TC Drive] with VMWare. You will need to shift+apple+g to get the got to folder dialogue to find /Volumes.<br />
You can access the files in your VM here<br />
/mnt/hgfs</p>
<p><strong>Install Gems</strong><br />
[what ever gems you need ]</p>
<p><strong>Configure Apache</strong><br />
(Sill on your VM)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">mkdir ~/rails_development</div>
</li>
<li class="li1">
<div class="de1">cd ~/rails_development</div>
</li>
<li class="li1">
<div class="de1">ln -s /mnt/hgfs/<span class="br0">&#91;</span>your drive<span class="br0">&#93;</span>/myapp myapp</div>
</li>
</ol>
</div>
<p>Now cd to /etc/apachec2/sites-available and sudo scp 000-default myapp<br />
then sudo vim myapp</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;VirtualHost *:<span class="nu0">80</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;ServerName myapp.<span class="me1">ubuntu</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;RailsEnv development</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp;DocumentRoot /home/wylie/rails_development/myapp/public</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;&lt;Directory /home/wylie/rails_development/myapp/public&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AllowOverride all &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Options -MultiViews</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp;&lt;/Directory&gt;</div>
</li>
<li class="li2">
<div class="de2">&lt;/VirtualHost&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Then cd ../sites-enabled<br />
and sudo ln -s ../sites-available/myapp<br />
then sudo rm 000-default<br />
Finally restart apache</p>
<p><strong>Set your hostfile</strong><br />
(Back on OS X)<br />
get the IP in your VM and edit your hosts file on OS X<br />
sudo vim /etc/hosts<br />
[ip of VM] myapp.ubuntu<br />
then run dscacheutil -flushcache (i usually have to run this a few times for it to take)</p>
<p><strong>Install the DB</strong><br />
create any databases you need for your apps</p>
<p><strong>Dont&#8217; forget the memcached</strong></p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">sudo apt-get install memcached</div>
</li>
<li class="li1">
<div class="de1">sudo /etc/init.<span class="me1">d</span>/memcached restart</div>
</li>
</ol>
</div>
<p><strong>Fire it up</strong><br />
open your browser and go to myapp.ubuntu</p>
<p><strong>Permission fixes</strong><br />
if you put id in the command line in your VM you will see that UID is 1000. The problem is that VMWare puts you in as UID 501 and GID 20. We need to update Ubuntu to match<br />
sudo vim /etc/passwd<br />
Then find your user and change 1000:1000 to 501:20, save and exit<br />
You wont be able to make any more changes so you need to reboot. You cant log in either so you need to Ctrl + Alt + f1 to switch to terminal. Login there.<br />
Then, you need to cd  to /home and change the permissions on everything in your user dir like this<br />
sudo chown -R 501:20 wylie<br />
Then you need to update the group file sudo vim /etc/group<br />
find dialup and change that to wylie [your username]. Then you need to find your username and change 1000 to 20.<br />
sudo reboot, login and permissions are now fixed. Its a good idea to update your apache in /etc/apache2/envars. Change www-data to your username in both places</p>
<p><strong>Git GUI fixes</strong><br />
The text in the UI is huge so you can open synaptic package manage and search for tcl. mark the 8.5 version for install. Then search for the tk8.5 and mark that for instalation. Then in command line<br />
sudo update-alternatives &#8211;config wish<br />
select the option with 8.5. It should be number 3.<br />
Now when you open git gui it should look normal </p>
<p>Now get to work&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2010/07/02/setting-up-a-new-dev-environment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Regular Expression Tools</title>
		<link>http://www.wyliethomas.com/blog/2010/06/25/regular-expression-tools/</link>
		<comments>http://www.wyliethomas.com/blog/2010/06/25/regular-expression-tools/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 07:51:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Regular Expressions]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=135</guid>
		<description><![CDATA[A friend shared a RegEx tool that came in really handy. Its www.rubular.com. I don&#8217;t get alot of opportunities to work with regex but when i do, having a new tool can make it almost fun.
I came up with this expression to match various URL&#8217;s that users enter that i could create new links from.



&#40;&#40;&#40;https?&#41;:\/\/&#41;?&#40;&#40;&#91;0-9a-zA-Z&#93;&#91;-\w&#93;*\.&#41;+&#91;a-zA-Z&#93;&#123;2,9&#125;&#40;:\d&#123;1,4&#125;&#41;?&#40;&#91;-\w\/#~.?=&#38;%@~])*))



Looks [...]]]></description>
			<content:encoded><![CDATA[<p>A friend shared a RegEx tool that came in really handy. Its www.rubular.com. I don&#8217;t get alot of opportunities to work with regex but when i do, having a new tool can make it almost fun.</p>
<p>I came up with this expression to match various URL&#8217;s that users enter that i could create new links from.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>https?<span class="br0">&#41;</span>:\/\/<span class="br0">&#41;</span>?<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">0</span>-9a-zA-Z<span class="br0">&#93;</span><span class="br0">&#91;</span>-\w<span class="br0">&#93;</span>*\.<span class="br0">&#41;</span>+<span class="br0">&#91;</span>a-zA-Z<span class="br0">&#93;</span><span class="br0">&#123;</span><span class="nu0">2</span>,<span class="nu0">9</span><span class="br0">&#125;</span><span class="br0">&#40;</span>:\d<span class="br0">&#123;</span><span class="nu0">1</span>,<span class="nu0">4</span><span class="br0">&#125;</span><span class="br0">&#41;</span>?<span class="br0">&#40;</span><span class="br0">&#91;</span>-\w\/<span class="co1">#~.?=&amp;%@~])*))</span></div>
</li>
</ol>
</div>
<p>Looks like cartoon swearing.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2010/06/25/regular-expression-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>color scheme tool</title>
		<link>http://www.wyliethomas.com/blog/2010/03/30/color-scheme-tool/</link>
		<comments>http://www.wyliethomas.com/blog/2010/03/30/color-scheme-tool/#comments</comments>
		<pubDate>Tue, 30 Mar 2010 15:30:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=127</guid>
		<description><![CDATA[How did I get this far without a tool like this?
A friend sent this link to me and I wanted to be sure that I never lost it.
http://colorschemedesigner.com/
]]></description>
			<content:encoded><![CDATA[<p>How did I get this far without a tool like this?<br />
A friend sent this link to me and I wanted to be sure that I never lost it.<br />
http://colorschemedesigner.com/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2010/03/30/color-scheme-tool/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>jQuery Emoticon Selector Plugin</title>
		<link>http://www.wyliethomas.com/blog/2010/03/02/jquery-emoticon-selector-plugin/</link>
		<comments>http://www.wyliethomas.com/blog/2010/03/02/jquery-emoticon-selector-plugin/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 23:15:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[emoticon]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=117</guid>
		<description><![CDATA[I couldn&#8217;t find an emoticon plugin for inserting an emoticon into a text area. I found plenty that converted the emoticon code into an image. So, I set out to write my first jQuery plugin.
If you choose to use this, keep in mind this was my first plugin and should be thoroughly tested before using [...]]]></description>
			<content:encoded><![CDATA[<p>I couldn&#8217;t find an emoticon plugin for inserting an emoticon into a text area. I found plenty that converted the emoticon code into an image. So, I set out to write my first jQuery plugin.</p>
<p>If you choose to use this, keep in mind this was my first plugin and should be thoroughly tested before using it. And if you make it better I would very much like to see what changes you made.</p>
<p>Lets check it out. </p>
<p>The view has two components. The jQuery call and the div with the necessary elements. (my examples are how i used this in Ruby)</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;% javascript_tag <span class="kw1">do</span> %&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; $<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span>function<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;div#emodiv&quot;</span><span class="br0">&#41;</span>.<span class="me1">emoticate</span><span class="br0">&#40;</span><span class="br0">&#123;</span>icon: <span class="st0">&#8217;smiley-icon&#8217;</span>, replacediv: <span class="st0">&#8216;list&#8217;</span><span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&lt;% <span class="kw1">end</span> %&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Then the div that you identified in the jQuery call.</p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&lt;div id=&quot;emodiv&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;img src=&quot;/images/emoticons/emoticon-0100-smile.png&quot; id=&quot;smiley-icon&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;div id=&quot;list&quot;&gt; &lt;/div&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &lt;select name=&quot;emoticons&quot;&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;:)&quot;&gt;emoticon-0100-smile.png&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;|-(&quot;&gt;emoticon-0106-crying.png&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;;)&quot;&gt;emoticon-0105-wink.png&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;:(&quot;&gt;emoticon-0106-crying.png&lt;/option&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &lt;option value=&quot;(pt)&quot;&gt;279.png&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;(ct)&quot;&gt;104.png&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;(au)&quot;&gt;342.png&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;(eg)&quot;&gt;emoticon-0116-evilgrin.png&lt;/option&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &lt;option value=&quot;:*&quot;&gt;emoticon-0109-kiss.png&lt;/option&gt;
</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &lt;/select&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;p&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;textarea id=&quot;comment_1&quot;&gt;&lt;/textarea&gt;
</div>
</li>
<li class="li1">
<div class="de1">&lt;/p&gt;
</div>
</li>
<li class="li2">
<div class="de2">&lt;/div&gt;
</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>What is going to happen is that the select and options will be changed to a UL list with the icon images. When an emoticon is clicked it will be inserted into the text area within the div. (The id for the textarea does need to be unique).</p>
<p>And here is the plugin. </p>
<div class="dean_ch" style="white-space: wrap;">
<ol>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>$<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; $.<span class="me1">fn</span>.<span class="me1">emoticate</span> = <span class="kw2">function</span><span class="br0">&#40;</span>options<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> defaults = <span class="br0">&#40;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; replacediv: &nbsp; <span class="st0">&#8216;replaceme&#8217;</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; image_path: &nbsp; <span class="st0">&#8216;/images/emoticons/&#8217;</span>, </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; speed: &nbsp; &nbsp; &nbsp; &nbsp;<span class="nu0">500</span>, </div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; icon: &nbsp; &nbsp; &nbsp; &nbsp; <span class="st0">&#8217;smiley&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> options = $.<span class="me1">extend</span><span class="br0">&#40;</span>defaults, options<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw1">this</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> select = $<span class="br0">&#40;</span><span class="st0">&#8217;select&#8217;</span>, <span class="kw1">this</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> area = $<span class="br0">&#40;</span><span class="st0">&#8216;textarea&#8217;</span>, <span class="kw1">this</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> icon = $<span class="br0">&#40;</span><span class="st0">&quot;#&quot;</span> + defaults.<span class="me1">icon</span>, <span class="kw1">this</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> emo =<span class="st0">&#8216;&lt;div class=&quot;emoticon-box&quot;&gt;&lt;ul&gt;&#8217;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;option&#8217;</span>, select<span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> option &nbsp; &nbsp;= $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> emocode &nbsp; &nbsp; &nbsp; &nbsp;= option.<span class="me1">val</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> title &nbsp; &nbsp;= option.<span class="me1">text</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> link = $.<span class="me1">fn</span>.<span class="me1">emoticate</span>.<span class="me1">emoticlick</span><span class="br0">&#40;</span>title, emocode, defaults.<span class="me1">image_path</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; emo += <span class="st0">&#8216;&lt;li&gt;&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + link</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + <span class="st0">&#8216;&lt;/li&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>; <span class="co1">//end option</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; emo += <span class="st0">&#8216;&lt;/ul&gt;&lt;/div&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; select.<span class="me1">remove</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//get rid of the select to make way for emotification</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;#&quot;</span> + defaults.<span class="me1">replacediv</span>, <span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">html</span><span class="br0">&#40;</span>emo<span class="br0">&#41;</span>; <span class="co1">//put the emotification HTML in the right div</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;#&quot;</span> + defaults.<span class="me1">replacediv</span>, <span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">hide</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="co1">//hide the emoticons</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> listdiv = $<span class="br0">&#40;</span><span class="st0">&quot;#&quot;</span> + defaults.<span class="me1">replacediv</span>, <span class="kw1">this</span><span class="br0">&#41;</span>; <span class="co1">//reset the var so it will work in the icon click.. this probably could be done better</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="co1">//bind the link for every a tag that is in the replaced div</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&#8216;a&#8217;</span>, <span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">&#8216;click&#8217;</span>, <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; $.<span class="me1">fn</span>.<span class="me1">emoticate</span>.<span class="me1">insertme</span><span class="br0">&#40;</span>area.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&#8216;id&#8217;</span><span class="br0">&#41;</span>, $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&#8216;id&#8217;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>; <span class="co1">//end bind</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="co1">//click the icon</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>icon, <span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">bind</span><span class="br0">&#40;</span><span class="st0">&#8216;click&#8217;</span>, <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; listdiv.<span class="me1">show</span><span class="br0">&#40;</span>defaults.<span class="me1">speed</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="co1">//function to click anywhere to hide the emoticons</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>document.<span class="me1">body</span><span class="br0">&#41;</span>click<span class="br0">&#40;</span><span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; listdiv.<span class="me1">hide</span><span class="br0">&#40;</span>defaults.<span class="me1">speed</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>; <span class="co1">//end select</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span>; <span class="co1">//end function</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; $.<span class="me1">fn</span>.<span class="me1">emoticate</span>.<span class="me1">emoticlick</span> = <span class="kw2">function</span><span class="br0">&#40;</span>id,emocode, image_path<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">return</span> <span class="st0">&#8216;&lt;a href=&quot;#&quot; id=&quot;&#8217;</span> + emocode +<span class="st0">&#8216;&quot;&gt;&lt;img src=&quot;&#8217;</span> + image_path + id + <span class="st0">&#8216;&quot;&gt;&lt;/a&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; $.<span class="me1">fn</span>.<span class="me1">emoticate</span>.<span class="me1">insertme</span> = <span class="kw2">function</span><span class="br0">&#40;</span>areaId,text<span class="br0">&#41;</span><span class="br0">&#123;</span></div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; <span class="kw2">var</span> txtarea = document.<span class="me1">getElementById</span><span class="br0">&#40;</span>areaId<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> scrollPos = txtarea.<span class="me1">scrollTop</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> strPos = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> br = <span class="br0">&#40;</span><span class="br0">&#40;</span>txtarea.<span class="me1">selectionStart</span> || txtarea.<span class="me1">selectionStart</span> == <span class="st0">&#8216;0&#8242;</span><span class="br0">&#41;</span> ? </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="st0">&quot;ff&quot;</span> : <span class="br0">&#40;</span>document.<span class="me1">selection</span> ? <span class="st0">&quot;ie&quot;</span> : <span class="kw2">false</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>br == <span class="st0">&quot;ie&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; txtarea.<span class="kw3">focus</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; <span class="kw2">var</span> range = document.<span class="me1">selection</span>.<span class="me1">createRange</span><span class="br0">&#40;</span><span class="br0">&#41;</span>; range.<span class="me1">moveStart</span> <span class="br0">&#40;</span><span class="st0">&#8216;character&#8217;</span>, -txtarea.<span class="me1">value</span>.<span class="me1">length</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; strPos = range.<span class="me1">text</span>.<span class="me1">length</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>br == <span class="st0">&quot;ff&quot;</span><span class="br0">&#41;</span> strPos = txtarea.<span class="me1">selectionStart</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> front = <span class="br0">&#40;</span>txtarea.<span class="me1">value</span><span class="br0">&#41;</span>.<span class="me1">substring</span><span class="br0">&#40;</span><span class="nu0">0</span>,strPos<span class="br0">&#41;</span>; &nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> <span class="kw3">back</span> = <span class="br0">&#40;</span>txtarea.<span class="me1">value</span><span class="br0">&#41;</span>.<span class="me1">substring</span><span class="br0">&#40;</span>strPos,txtarea.<span class="me1">value</span>.<span class="me1">length</span><span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtarea.<span class="me1">value</span>=front+text+<span class="kw3">back</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; strPos = strPos + text.<span class="me1">length</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>br == <span class="st0">&quot;ie&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; txtarea.<span class="kw3">focus</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> range = document.<span class="me1">selection</span>.<span class="me1">createRange</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; range.<span class="me1">moveStart</span> <span class="br0">&#40;</span><span class="st0">&#8216;character&#8217;</span>, -txtarea.<span class="me1">value</span>.<span class="me1">length</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; range.<span class="me1">moveStart</span> <span class="br0">&#40;</span><span class="st0">&#8216;character&#8217;</span>, strPos<span class="br0">&#41;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; range.<span class="me1">moveEnd</span> <span class="br0">&#40;</span><span class="st0">&#8216;character&#8217;</span>, <span class="nu0">0</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; range.<span class="me1">select</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">&#40;</span>br == <span class="st0">&quot;ff&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; txtarea.<span class="me1">selectionStart</span> = strPos;</div>
</li>
<li class="li2">
<div class="de2">&nbsp; &nbsp; &nbsp; txtarea.<span class="me1">selectionEnd</span> = strPos;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; txtarea.<span class="kw3">focus</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; txtarea.<span class="me1">scrollTop</span> = scrollPos;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li2">
<div class="de2">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="br0">&#40;</span>jQuery<span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Or you can download it <a href="http://www.wyliethomas.com/blog/wp-content/uploads/2010/03/jquery.emotification.js">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2010/03/02/jquery-emoticon-selector-plugin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Installing passenger on ubuntu has some issues</title>
		<link>http://www.wyliethomas.com/blog/2009/12/20/installing-passenger-on-ubuntu-has-some-issues/</link>
		<comments>http://www.wyliethomas.com/blog/2009/12/20/installing-passenger-on-ubuntu-has-some-issues/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 07:46:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=115</guid>
		<description><![CDATA[I followed the instructions on the Ubuntu site and the modrails site and everything would install fine but I could never get passenger to serve pages to apache.
Passenger assumes the permissions of the default apache user. And if you don&#8217;t set up your default user as www-data when you install Ubuntu Passenger wont have permission [...]]]></description>
			<content:encoded><![CDATA[<p>I followed the instructions on the Ubuntu site and the modrails site and everything would install fine but I could never get passenger to serve pages to apache.</p>
<p>Passenger assumes the permissions of the default apache user. And if you don&#8217;t set up your default user as www-data when you install Ubuntu Passenger wont have permission to run the app.</p>
<p>Open up /etc/apache2/envvars and change the www-data user  and group to match your default user and group and you should be set.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2009/12/20/installing-passenger-on-ubuntu-has-some-issues/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Watch the whitespace</title>
		<link>http://www.wyliethomas.com/blog/2009/10/30/watch-the-whitespace/</link>
		<comments>http://www.wyliethomas.com/blog/2009/10/30/watch-the-whitespace/#comments</comments>
		<pubDate>Sat, 31 Oct 2009 04:51:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.wyliethomas.com/blog/?p=112</guid>
		<description><![CDATA[I have been spending the last hour wondering why this doesnt work.
Post.find_by_sql["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]
Its because it needed to be like this:
Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]
yeah, you need that whitespace there.
]]></description>
			<content:encoded><![CDATA[<p>I have been spending the last hour wondering why this doesnt work.</p>
<p>Post.find_by_sql["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]</p>
<p>Its because it needed to be like this:<br />
Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]</p>
<p>yeah, you need that whitespace there.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wyliethomas.com/blog/2009/10/30/watch-the-whitespace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

