<?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>EragonJ - A humble navigator &#187; RoR</title>
	<atom:link href="http://eragonj.hax4.in/blog/category/ror/feed" rel="self" type="application/rss+xml" />
	<link>http://eragonj.hax4.in/blog</link>
	<description></description>
	<lastBuildDate>Thu, 05 Jan 2012 12:33:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[RoR] Prince + Princely = Princely Prince &gt; Princess</title>
		<link>http://eragonj.hax4.in/blog/ror-prince-princely-princely-prince-princess.html</link>
		<comments>http://eragonj.hax4.in/blog/ror-prince-princely-princely-prince-princess.html#comments</comments>
		<pubDate>Fri, 28 May 2010 09:50:49 +0000</pubDate>
		<dc:creator>EragonJ</dc:creator>
				<category><![CDATA[RoR]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[glyphs]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[msttcorefonts]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[Prince]]></category>
		<category><![CDATA[Princely]]></category>
		<category><![CDATA[字型]]></category>

		<guid isPermaLink="false">http://eragonj.hax4.in/?p=445</guid>
		<description><![CDATA[Tweet 每個童話故事最後面都是說王子和公主最後過著幸福美滿的日子，然後就沒了，但是我發現在RoR版的童話故事內，王子再也不需要公主在一起了，反而是自己一個人以高貴的身份自居!! 好吧，真是難笑的爛梗，我也覺得不好笑。 最近因為一些需求，所以我改負責開發PDF輸出的部分，因為團隊的人很懶，不想要自己手動做一個需要一直變動且漂漂亮亮的Excel檔，所以這個大任就跑到我身上了。 經過了一兩天的Hacking，終於找到一個很屌的東西，叫做Prince，套一下網站上的Slogan，『Prince , a great way of getting web content onto papaer』，果真就像它上面寫的一樣，真的超好用的。 最重要的部分就是可以「直接把XML或是HTML轉成PDF」，沒錯，比以前用PDFlib手繪還屌。因為我們大部分的產品都是以Web的方式呈現，所以大量的資料和檔案都是存成HTML的格式，有這樣子的東西就很方便啦，接下來要開始進入Hacking的部份了（也許會有點多，可能也會有些錯誤，不過就請你有耐心的看下去） 一開始當然是來到Prince的官方網站挑個符合自己作業系統的Prince程式吧。 裝好後，其實你就已經可以自己利用Prince把HTML轉成PDF了，如果我只寫到這邊我大概會被打死，所以我還是講一下要如何把它和RoR做個結合。 Princely是一個把Prince包裝起來的好用套件，它可以讓你把Prince和你的程式碼結合成一起，輕鬆呈現。所以也要安裝這個Plugin，那就來去你的Application的根目錄來安裝它，輸入： OK，目前你已經完成整個童話故事的劇情了，但是你知道，現實世界的童話故事總是不會這麼的完全，如果就這樣結束的話那我就不用寫這篇來提醒自己了 = = 。 這個是Pricely官方的範例檔，我們只要在render的時候下兩個重要的symbol就可以。一個是「:pdf」，它代表的是該pdf被下載時的檔名，而「:stylesheets」則是代表說你原本的HTML file所引入的css檔檔名。這邊要注意一下，如果你直接在Views下用HTML的方式，或是用Rails內建的「stylesheet_link_tag」來引入，都是沒有用的。一定要在這邊下「:stylesheets」來讓Prince去額外引入那個css檔。 對了，忘了在這邊提一下，我測試的時候發現到一個問題，就是如果在Views用「image_tag」來設定相對路徑的話，圖會出不來，所以要把它改寫成絕對路徑。（因為在RoR的Conventions有特別說到這點，為了可移植性，這邊要用相對的方式讓RoR自動去對應那個圖片的路徑） 接下來就是最大的麻煩，害我花了將近一整天的時間沒去上課。就是有關中文呈現的問題。在預設的情況下，所有的中文字都會變成「???」。我原本差點因為這個問題崩潰，不過之後還是解決了，就來看一下要怎麼處理，如果沒有發生這種情況或是不需要輸出中文字的人就先恭喜你啦，你已經幫王子寫下最後的結局了，所以就這樣子啦。 不過如果你真的和我一樣可憐，那你就要先打死這個Bug才行。在Prince官方有提到，如果一直出現「prince: internal error: no fallback glyph for character U+00XX」，就代表沒有相對應的字型可以去匹配中文字，所以通常，像我Server這邊，是因為沒有裝「msttcorefonts」這個package，所以要去這邊來安裝這個package。 如果還是有問題，那就改用官方建議的另外一個方法， 去找出安裝Prince時的fonts.css設定檔，修改它並重新定義css的generic font families去map到你自定的字型上去，以我為例，我這邊的檔案是放在「/usr/lib/prince/style/fonts.css」。 下面是我自己設定的部分： 。我就把css內的「font-family: &#8220;verdana&#8221;;」 map到蘋果儷黑體的實體路徑，所以Prince就會把我HTML那邊設定的「font-family: &#8220;verdana&#8221;」以蘋果儷黑的字型寫入PDF。 以上就是這次的小Hacking，大致上是沒有什麼太大的問題，如果有什麼更新的話我會再直接在這邊做註解的。大概就是這樣啦，大家掰，我們下次見。]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="border:1px solid #808080;background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Feragonj.hax4.in%2Fblog%2Fror-prince-princely-princely-prince-princess.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://eragonj.hax4.in/blog/ror-prince-princely-princely-prince-princess.html"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://eragonj.hax4.in/blog/ror-prince-princely-princely-prince-princess.html"  data-text="[RoR] Prince + Princely = Princely Prince > Princess" data-count="horizontal" data-via="EragonJ">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><div align="center"><img src='http://www.princexml.com/images/plogo5.png' ></img></div>
<p><br/><br />
每個童話故事最後面都是說王子和公主最後過著幸福美滿的日子，然後就沒了，但是我發現在RoR版的童話故事內，王子再也不需要公主在一起了，反而是自己一個人以高貴的身份自居!!<br />
<br/><br />
<span id="more-445"></span><br />
好吧，真是難笑的爛梗，我也覺得不好笑。<br />
<br/><br />
最近因為一些需求，所以我改負責開發PDF輸出的部分，因為團隊的人很懶，不想要自己手動做一個需要一直變動且漂漂亮亮的Excel檔，所以這個大任就跑到我身上了。<br />
<br/><br />
經過了一兩天的Hacking，終於找到一個很屌的東西，叫做<a href="http://www.princexml.com/">Prince</a>，套一下網站上的Slogan，『Prince , a great way of getting web content onto papaer』，果真就像它上面寫的一樣，真的超好用的。<br />
<br/><br />
最重要的部分就是可以「直接把XML或是HTML轉成PDF」，沒錯，比以前用PDFlib手繪還屌。因為我們大部分的產品都是以Web的方式呈現，所以大量的資料和檔案都是存成HTML的格式，有這樣子的東西就很方便啦，接下來要開始進入Hacking的部份了（也許會有點多，可能也會有些錯誤，不過就請你有耐心的看下去）<br />
<br/><br />
一開始當然是來到<a href="http://www.princexml.com/download/">Prince的官方網站</a>挑個符合自己作業系統的Prince程式吧。<br />
<br/><br />
裝好後，其實你就已經可以自己利用Prince把HTML轉成PDF了，如果我只寫到這邊我大概會被打死，所以我還是講一下要如何把它和RoR做個結合。<br />
<br/><br />
Princely是一個把Prince包裝起來的好用套件，它可以讓你把Prince和你的程式碼結合成一起，輕鬆呈現。所以也要安裝這個Plugin，那就來去你的Application的根目錄來安裝它，輸入：<br />
<script src="http://gist.github.com/416933.js?file=gistfile1.txt"></script><br />
<br/><br />
OK，目前你已經完成整個童話故事的劇情了，但是你知道，現實世界的童話故事總是不會這麼的完全，如果就這樣結束的話那我就不用寫這篇來提醒自己了 = = 。<br />
<br/><br />
<script src="http://gist.github.com/416939.js?file=gistfile1.builder"></script><br />
這個是Pricely官方的範例檔，我們只要在render的時候下兩個重要的symbol就可以。一個是「:pdf」，它代表的是該pdf被下載時的檔名，而「:stylesheets」則是代表說你原本的HTML file所引入的css檔檔名。這邊要注意一下，如果你直接在Views下用HTML的方式，或是用Rails內建的「stylesheet_link_tag」來引入，都是沒有用的。一定要在這邊下「:stylesheets」來讓Prince去額外引入那個css檔。<br />
<br/><br />
對了，忘了在這邊提一下，我測試的時候發現到一個問題，就是如果在Views用「image_tag」來設定相對路徑的話，圖會出不來，所以要把它改寫成絕對路徑。（因為在RoR的Conventions有特別說到這點，為了可移植性，這邊要用相對的方式讓RoR自動去對應那個圖片的路徑）<br />
<br/><br />
接下來就是最大的麻煩，害我花了將近一整天的時間沒去上課。就是有關中文呈現的問題。在預設的情況下，所有的中文字都會變成「???」。我原本差點因為這個問題崩潰，不過之後還是解決了，就來看一下要怎麼處理，如果沒有發生這種情況或是不需要輸出中文字的人就先恭喜你啦，你已經幫王子寫下最後的結局了，所以就這樣子啦。<br />
<br/><br />
不過如果你真的和我一樣可憐，那你就要先打死這個Bug才行。在Prince官方有提到，如果一直出現「prince: internal error: no fallback glyph for character U+00XX」，就代表沒有相對應的字型可以去匹配中文字，所以通常，像我Server這邊，是因為沒有裝「msttcorefonts」這個package，所以要去<a href="http://corefonts.sourceforge.net/">這邊</a>來安裝這個package。<br />
<br/><br />
如果還是有問題，那就改用官方建議的<a href="http://www.princexml.com/doc/7.0/fonts/">另外一個方法</a>，<br />
去找出安裝Prince時的fonts.css設定檔，修改它並重新定義css的generic font families去map到你自定的字型上去，以我為例，我這邊的檔案是放在「/usr/lib/prince/style/fonts.css」。<br />
<br/><br />
下面是我自己設定的部分：<br />
<script src="http://gist.github.com/416972.js?file=gistfile1.css"></script>。我就把css內的「font-family: &#8220;verdana&#8221;;」 map到蘋果儷黑體的實體路徑，所以Prince就會把我HTML那邊設定的「font-family: &#8220;verdana&#8221;」以蘋果儷黑的字型寫入PDF。<br />
<br/><br />
以上就是這次的小Hacking，大致上是沒有什麼太大的問題，如果有什麼更新的話我會再直接在這邊做註解的。大概就是這樣啦，大家掰，我們下次見。</p>
]]></content:encoded>
			<wfw:commentRss>http://eragonj.hax4.in/blog/ror-prince-princely-princely-prince-princess.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[RoR] Passenger + Apache = 無敵金身</title>
		<link>http://eragonj.hax4.in/blog/ror-passenger-apache.html</link>
		<comments>http://eragonj.hax4.in/blog/ror-passenger-apache.html#comments</comments>
		<pubDate>Tue, 02 Mar 2010 13:01:36 +0000</pubDate>
		<dc:creator>EragonJ</dc:creator>
				<category><![CDATA[Apache]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[httpd.conf]]></category>
		<category><![CDATA[ln]]></category>
		<category><![CDATA[Module]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Sybolic Link]]></category>

		<guid isPermaLink="false">http://eragonj.hax4.in/?p=313</guid>
		<description><![CDATA[Tweet 目前為了要把RoR和Apache做個整合，所以在網路上找尋可能的實作方式，找著找著，就找到Passenger這個Apache_mod，真是太好了，接下來就是來看一下要如何設定了。 文件參考 以下是用「MAC OSX 10.5.8」、「Apache2.2.13」當工作環境，如果有出入的話麻煩自行微調一下。 剛開始要先有Apache，這是理所當然的，不過原先在蘋果上面已經綁了一個Apache Server，而在Passenger 1.0.3以後有支援原生的Apache Server，因為照理說大家都已經有了，所以我們就直接跳過安裝Apache這一步吧。 接下來就是透過Gem裝一下我們的Passenger寶石。 這邊我在裝的時候花了一些時間，可能要耐心等候一下，大概有幾分鐘。 再來就是讓Apache來建立這個Module 等這個Module安裝成功後，就會得這個畫面： 截取重要的那一段訊息之後： 現在我們就可以把這一段Apache的設定放入httpd.conf的設定檔。 不知道大家的設定檔位置是在哪，我的話是放在「/private/etc/apache2/httpd.conf」， 接下來就可以把剛剛的那一段設定寫在檔案的最後面，讓Apache會在啟動時去讀取那個模組，並自動設定好Passenger的位置和Ruby bin的位（這一段是因人而異的，所以通常每個人都不太一樣，要寫入自己安裝完Module時的那段設定）。 Good，基本的模組設定如果都成功的話就可以開始設定我們的Rails專案了。 BTW，如果Passenger發生了什麼問題的話，直接修改你的「httpd.conf」把那三行comment掉就可以停止載入Passenger了。對了忘記提醒一下，只要有「動到」Apache的任何一個設定檔，就一直要reload Apache哦，別傻傻的一直試，想說怎麼都沒有效果出來。 再來是Passenger的簡單應用， 因為原本在「httpd.conf」的最後面有寫入「Include /private/etc/apache2/other/*.conf」，所以我們就在other這個資料夾新增一個適用於自己專案的設定檔，這邊就叫他「test.conf」吧。（以下用VirtualHost來設定路徑） 然後因為我的專案是叫做「test」，所以我就在「test.conf」這樣設定： 在這邊有幾點要注意的就是當你要部署一個專案的時候，一定要把「DocumentRoot」指到你的專案的「public」資料夾，而且要「Disable MultiViews」。 所以現在只要打「http://localhost」就可以看到我們的頁面囉。 再來要補充的是進階用法：如果我們不要直接Match我們的專案到該網域的話，那要怎麼做到Sub URI? （如http://localhost/test 可以指向到我們的test專案，而 http://localhost/ 可能就還是我們原先的Apache welcome頁面) 看官方的做法真的是很酷，要利用到Symbolic Link來部署我們的專案，超酷，那該怎麼做呢?來看一下我的設定檔。 一步步解釋，因為用到Sybolic Link，所以如果我有很多種不同的專案時（如 /test , /abc , /def ），那我就會有很多個Link，所以先統一放在「/Users/EragonJ/links」這個資料夾內，接下來再把他們指向到你要的專案下的public資料夾，請看圖例： Symbolic Link是這樣製作的「ln -s 被指向的位置 symbolic link的名字」， OK，設定好我們的Link後，再來就是要修改一下原先的conf檔（依照上面那個Gist的註解來做修改），那個RailsBaseURI就是我們「http://localhost/xxxx」的「xxxx」，也就是原本想要實作的Sub URI，只要透過Directory內的Symbolic Link [...]]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="border:1px solid #808080;background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Feragonj.hax4.in%2Fblog%2Fror-passenger-apache.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://eragonj.hax4.in/blog/ror-passenger-apache.html"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://eragonj.hax4.in/blog/ror-passenger-apache.html"  data-text="[RoR] Passenger + Apache = 無敵金身" data-count="horizontal" data-via="EragonJ">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>目前為了要把RoR和Apache做個整合，所以在網路上找尋可能的實作方式，找著找著，就找到Passenger這個Apache_mod，真是太好了，接下來就是來看一下要如何設定了。<br />
<br/><br />
<a href="http://www.modrails.com/documentation/Users%20guide%20Apache.html">文件參考</a><br />
<br/><br />
以下是用「MAC OSX 10.5.8」、「Apache2.2.13」當工作環境，如果有出入的話麻煩自行微調一下。<br />
<br/><br />
剛開始要先有Apache，這是理所當然的，不過原先在蘋果上面已經綁了一個Apache Server，而在Passenger 1.0.3以後有支援原生的Apache Server，因為照理說大家都已經有了，所以我們就直接跳過安裝Apache這一步吧。<br />
<br/><br />
接下來就是透過Gem裝一下我們的Passenger寶石。<br />
<script src="http://gist.github.com/319448.js?file=gistfile1.sh"></script><br />
這邊我在裝的時候花了一些時間，可能要耐心等候一下，大概有幾分鐘。<br />
<br/><br />
再來就是讓Apache來建立這個Module<br />
<script src="http://gist.github.com/319456.js?file=gistfile1.sh"></script><br />
等這個Module安裝成功後，就會得這個畫面：<br />
<a href="http://eragonj.hax4.in/blog/wp-content/uploads/2010/03/pic.png"><img src="http://eragonj.hax4.in/blog/wp-content/uploads/2010/03/pic-1024x574.png" alt="" title="pic" width="512" height="287" class="alignnone size-large wp-image-315" /></a><br />
<br/><br />
截取重要的那一段訊息之後：<br />
<script src="http://gist.github.com/319459.js?file=gistfile1.sh"></script><br />
現在我們就可以把這一段Apache的設定放入httpd.conf的設定檔。<br />
<br/><br />
不知道大家的設定檔位置是在哪，我的話是放在「/private/etc/apache2/httpd.conf」，<br />
<br/><br />
接下來就可以把剛剛的那一段設定寫在檔案的最後面，讓Apache會在啟動時去讀取那個模組，並自動設定好Passenger的位置和Ruby bin的位（這一段是因人而異的，所以通常每個人都不太一樣，要寫入自己安裝完Module時的那段設定）。<br />
<br/><br />
Good，基本的模組設定如果都成功的話就可以開始設定我們的Rails專案了。<br />
<br/><br />
BTW，如果Passenger發生了什麼問題的話，直接修改你的「httpd.conf」把那三行comment掉就可以停止載入Passenger了。對了忘記提醒一下，只要有「動到」Apache的任何一個設定檔，就一直要reload Apache哦，別傻傻的一直試，想說怎麼都沒有效果出來。<br />
<br/><br />
再來是Passenger的簡單應用，<br />
<br/><br />
因為原本在「httpd.conf」的最後面有寫入「Include /private/etc/apache2/other/*.conf」，所以我們就在other這個資料夾新增一個適用於自己專案的設定檔，這邊就叫他「test.conf」吧。（以下用VirtualHost來設定路徑）<br />
<br/><br />
然後因為我的專案是叫做「test」，所以我就在「test.conf」這樣設定：<br />
<script src="http://gist.github.com/319469.js?file=gistfile1.txt"></script><br />
在這邊有幾點要注意的就是當你要部署一個專案的時候，一定要把「DocumentRoot」指到你的專案的「public」資料夾，而且要「Disable MultiViews」。<br />
<br/><br />
所以現在只要打「http://localhost」就可以看到我們的頁面囉。<br />
<br/><br />
再來要補充的是進階用法：如果我們不要直接Match我們的專案到該網域的話，那要怎麼做到Sub URI? （如http://localhost/test 可以指向到我們的test專案，而 http://localhost/ 可能就還是我們原先的Apache welcome頁面)<br />
<br/><br />
看官方的做法真的是很酷，要利用到Symbolic Link來部署我們的專案，超酷，那該怎麼做呢?來看一下我的設定檔。<br />
<script src="http://gist.github.com/319474.js?file=gistfile1.txt"></script><br />
一步步解釋，因為用到Sybolic Link，所以如果我有很多種不同的專案時（如 /test , /abc , /def ），那我就會有很多個Link，所以先統一放在「/Users/EragonJ/links」這個資料夾內，接下來再把他們指向到你要的專案下的public資料夾，請看圖例：<br />
<a href="http://eragonj.hax4.in/blog/wp-content/uploads/2010/03/link.png"><img src="http://eragonj.hax4.in/blog/wp-content/uploads/2010/03/link.png" alt="" title="link" width="382" height="52" class="alignnone size-full wp-image-323" /></a><br />
<br/><br />
Symbolic Link是這樣製作的「ln -s 被指向的位置 symbolic link的名字」，<br />
<script src="http://gist.github.com/319483.js?file=gistfile1.sh"></script><br />
OK，設定好我們的Link後，再來就是要修改一下原先的conf檔（依照上面那個Gist的註解來做修改），那個RailsBaseURI就是我們「http://localhost/xxxx」的「xxxx」，也就是原本想要實作的Sub URI，只要透過Directory內的Symbolic  Link 去幫我們指向到我們的「test/public」，就可以了。<br />
<br/><br />
以上是我在玩Passenger的一些小心得，如果有什麼錯誤的地方麻煩留言指正，而更進階的玩法就麻煩參照官網上的資料囉。<br />
<br/><br />
我們下次見。<br />
<br/></p>
]]></content:encoded>
			<wfw:commentRss>http://eragonj.hax4.in/blog/ror-passenger-apache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[RoR] ActionMailer + Gmail +SMTP_tls = Amazing !</title>
		<link>http://eragonj.hax4.in/blog/ror-actionmailer-gmail-smtp_tls-amazing.html</link>
		<comments>http://eragonj.hax4.in/blog/ror-actionmailer-gmail-smtp_tls-amazing.html#comments</comments>
		<pubDate>Wed, 17 Feb 2010 15:41:33 +0000</pubDate>
		<dc:creator>EragonJ</dc:creator>
				<category><![CDATA[RoR]]></category>
		<category><![CDATA[1.8.6]]></category>
		<category><![CDATA[1.8.7]]></category>
		<category><![CDATA[ActionMailer]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[stmp_tls]]></category>

		<guid isPermaLink="false">http://eragonj.hax4.in/?p=274</guid>
		<description><![CDATA[Tweet 哦耶，今天一個下午在尋找和PHPmailer一樣的東西，讓我可以在RoR上面做到「註冊完自動回覆」的功能，中間參考了很多個站的教學，但是都一直實做不出來寄信的效果，就覺得很XX，結果皇天不負苦心人，我在一個國外的網站找到了實做方法也測試成功。 先註明一下環境：「Ruby 1.8.6」、「Rails 2.3.5」(後面有「Ruby 1.8.7」的做法)。 OK~GO，一開始先來去「ROOT/vendor/plugins/」，用下面這個指令把相關的資料抓回來，此時你的plugins下就會多出一個action_mailer_tls的資料夾了。 再修改你的「ROOT/config/environment.rb」，把以下這段Code插在end之後， OK，大功告成，原本要用什麼sendmail還是什麼mail server才可以做到的事情現在單靠Gmail就可以做到，算是比較符合小型開發者的需求。那環境用好了，接下來就依官方教學設定自己的ActionMailer了。 一開始先產生我們的Model， 好，原本的Model內容應該是空的，來加入一些我們的基本設定(官網的詳細介紹)： 現在Model做好了，要再為該Model下的Action做一個View(這邊很重要)，我原本以為這個View可以不用做，結果我錯了，因為官方教學有寫到，這個就是信件的內容，所以如果你不產生這個View，就會出問題(之前就是敗在這)， 在我的例子中，我的路徑是「ROOT/app/views/eat_me_mail/send_mail.html.erb」，這裡面就是你想寫的話啦，要寫什麼就隨便個人了，這邊就不多說明，最後就是和Controller合併起來。 這邊先引用一下官方的說明「You never instantiate your mailer class. Rather, your delivery instance methods are automatically wrapped in class methods that start with the word deliver_ followed by the name of the mailer method that you would like to deliver」，它的意思是說我們要在Method前面加上deliver_才能呼叫，在這大家就依自己的工作需求，呼叫自己的Method就可以傳送出去了，而下面是我的例子： 到這邊，整個過程都已經結束了，如果你在讀取該Controller下的Action時有產生短暫延遲，就可以再去server看一下是不是有類似以下的訊息，如果都有的話，那就成功啦，耶斯! 最後附上一張測試成功圖，我們下次見:D~ 〈補充一下Ruby1.8.7的作法〉 因為工作上的關係，所以自己和伺服器的版本不同，所以在移植的時候出了很大的問題，雖然程式都沒有報錯，但是會發現信寄不出去，這真是一個很該死的問題，所以我又上網到處找資料，發現了原本的tls是給Ruby1.8.6版本用的，所以在1.8.7時就不能再用這個做法，所以要改用另外一個寶石。 [...]]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="border:1px solid #808080;background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Feragonj.hax4.in%2Fblog%2Fror-actionmailer-gmail-smtp_tls-amazing.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://eragonj.hax4.in/blog/ror-actionmailer-gmail-smtp_tls-amazing.html"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://eragonj.hax4.in/blog/ror-actionmailer-gmail-smtp_tls-amazing.html"  data-text="[RoR] ActionMailer + Gmail +SMTP_tls = Amazing !" data-count="horizontal" data-via="EragonJ">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>哦耶，今天一個下午在尋找和PHPmailer一樣的東西，讓我可以在RoR上面做到「註冊完自動回覆」的功能，中間參考了很多個站的教學，但是都一直實做不出來寄信的效果，就覺得很XX，結果皇天不負苦心人，我在一個國外的網站找到了實做方法也測試成功。<br />
<br/><br />
先註明一下環境：「Ruby 1.8.6」、「Rails 2.3.5」(後面有「Ruby 1.8.7」的做法)。<br />
<br/><br />
OK~GO，一開始先來去「ROOT/vendor/plugins/」，用下面這個指令把相關的資料抓回來，此時你的plugins下就會多出一個action_mailer_tls的資料夾了。<br />
<script src="http://gist.github.com/306718.js?file=gistfile1.sh"></script></p>
<p>再修改你的「ROOT/config/environment.rb」，把以下這段Code插在end之後，<br />
<script src="http://gist.github.com/306694.js?file=gistfile1.rb"></script></p>
<p>OK，大功告成，原本要用什麼sendmail還是什麼mail server才可以做到的事情現在單靠Gmail就可以做到，算是比較符合小型開發者的需求。那環境用好了，接下來就依官方教學設定自己的ActionMailer了。<br />
<br/><br />
一開始先產生我們的Model，<br />
<script src="http://gist.github.com/306699.js?file=gistfile1.rb"></script><br />
<br/><br />
好，原本的Model內容應該是空的，來加入一些我們的基本設定(<a href="http://api.rubyonrails.org/classes/ActionMailer/Base.html">官網的詳細介紹</a>)：<br />
<script src="http://gist.github.com/306705.js?file=gistfile1.rb"></script><br />
<br/><br />
現在Model做好了，要再為該Model下的Action做一個View(這邊很重要)，我原本以為這個View可以不用做，結果我錯了，因為官方教學有寫到，這個就是信件的內容，所以如果你不產生這個View，就會出問題(之前就是敗在這)，<br />
<br/><br />
在我的例子中，我的路徑是「ROOT/app/views/eat_me_mail/send_mail.html.erb」，這裡面就是你想寫的話啦，要寫什麼就隨便個人了，這邊就不多說明，最後就是和Controller合併起來。<br />
<br/><br />
這邊先引用一下官方的說明「You never instantiate your mailer class. Rather, your delivery instance methods are automatically wrapped in class methods that start with the word deliver_ followed by the name of the mailer method that you would like to deliver」，它的意思是說我們要在Method前面加上deliver_才能呼叫，在這大家就依自己的工作需求，呼叫自己的Method就可以傳送出去了，而下面是我的例子：<br />
<script src="http://gist.github.com/306711.js?file=gistfile1.rb"></script><br />
<br/><br />
到這邊，整個過程都已經結束了，如果你在讀取該Controller下的Action時有產生短暫延遲，就可以再去server看一下是不是有類似以下的訊息，如果都有的話，那就成功啦，耶斯!<br />
<script src="http://gist.github.com/306715.js?file=gistfile1.txt"></script><br />
<br/><br />
最後附上一張測試成功圖，我們下次見:D~<br />
<a href="http://eragonj.hax4.in/blog/wp-content/uploads/2010/02/test.png"><img src="http://eragonj.hax4.in/blog/wp-content/uploads/2010/02/test.png" alt="" title="test" width="374" height="204" class="alignnone size-full wp-image-275" /></a><br />
<br/><br />
〈補充一下Ruby1.8.7的作法〉<br />
<br/><br />
因為工作上的關係，所以自己和伺服器的版本不同，所以在移植的時候出了很大的問題，雖然程式都沒有報錯，但是會發現信寄不出去，這真是一個很該死的問題，所以我又上網到處找資料，發現了原本的tls是給Ruby1.8.6版本用的，所以在1.8.7時就不能再用這個做法，所以要改用另外一個寶石。<br />
<br/><br />
<script src="http://gist.github.com/310748.js?file=gistfile1.sh"></script><br />
<br/><br />
然後修改「ROOT/config/environment.rb」這個檔案的內容如下，<br />
<script src="http://gist.github.com/310749.js?file=gistfile1.rb"></script><br />
<br/><br />
OK，這樣就可以了，大概就是這樣啦:D~</p>
]]></content:encoded>
			<wfw:commentRss>http://eragonj.hax4.in/blog/ror-actionmailer-gmail-smtp_tls-amazing.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[RoR] Rocks</title>
		<link>http://eragonj.hax4.in/blog/ror-rocks.html</link>
		<comments>http://eragonj.hax4.in/blog/ror-rocks.html#comments</comments>
		<pubDate>Sun, 14 Feb 2010 17:29:35 +0000</pubDate>
		<dc:creator>EragonJ</dc:creator>
				<category><![CDATA[RoR]]></category>
		<category><![CDATA[CRUD]]></category>
		<category><![CDATA[migrate]]></category>
		<category><![CDATA[scaffold]]></category>
		<category><![CDATA[資料庫]]></category>

		<guid isPermaLink="false">http://eragonj.hax4.in/?p=211</guid>
		<description><![CDATA[Tweet 好吧，我真的想說，RoR的Migrate和Scaffold這兩個東西實在是令我太吃驚了，我覺得大家應該都是衝著幾個好用的東西來玩RoR吧，先說說Migrate，它整合不同資料庫的語法，只要用RoR的專用寫法就可以通吃各大資料庫的格式，光是這點就很屌了(雖然我都是用MySqlXD)，還有更屌的就是它加入了類似版本控制的功能，只要你「爽」，你要怎樣搞你的資料庫都可以!! 大家一定會說，這有什麼了不起的，我直接進資料庫改就好了，有什麼大不了的，哦不，那個鎖碎的動作現在都不用了，只要用Migrate的升級、降級，你要怎樣呈現你的資料庫都隨便你，什麼時候要新增或是刪除資料表也可以，要像玩仙境傳說Online一樣會回溯寶物都可以啦，這真的是太酷了!! 而Scaffold來建造CRUD的基本架構真的是很快(要改的多麼華麗就看個人了)，以前都要寫個半死，現在只要幾個指令敲一下就通通跑出來了，省下很多不必要的時間，把這些時間拿去做一些比較深入的分析或是實作都比較划算，真的是很好用。 雖然現在還沒有玩的很透徹(我直接看官方API看了好幾天= =，因為台灣都沒有Rails 2.0以上的書，真是太該死了，就當練習吧! )，但是它基本好用的地方我已經了解到了，就差語法和API的呼叫就能夠比較上手了，加油!! RoR Rocks => RRR]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="border:1px solid #808080;background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Feragonj.hax4.in%2Fblog%2Fror-rocks.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://eragonj.hax4.in/blog/ror-rocks.html"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://eragonj.hax4.in/blog/ror-rocks.html"  data-text="[RoR] Rocks" data-count="horizontal" data-via="EragonJ">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>好吧，我真的想說，RoR的Migrate和Scaffold這兩個東西實在是令我太吃驚了，我覺得大家應該都是衝著幾個好用的東西來玩RoR吧，先說說Migrate，它整合不同資料庫的語法，只要用RoR的專用寫法就可以通吃各大資料庫的格式，光是這點就很屌了(雖然我都是用MySqlXD)，還有更屌的就是它加入了類似版本控制的功能，只要你「爽」，你要怎樣搞你的資料庫都可以!!<br />
<br/><br />
大家一定會說，這有什麼了不起的，我直接進資料庫改就好了，有什麼大不了的，哦不，那個鎖碎的動作現在都不用了，只要用Migrate的升級、降級，你要怎樣呈現你的資料庫都隨便你，什麼時候要新增或是刪除資料表也可以，要像玩<del datetime="2010-02-14T17:18:27+00:00">仙境傳說Online</del>一樣會回溯寶物都可以啦，這真的是太酷了!!<br />
<br/><br />
而Scaffold來建造CRUD的基本架構真的是很快(要改的多麼華麗就看個人了)，以前都要寫個半死，現在只要幾個指令敲一下就通通跑出來了，省下很多不必要的時間，把這些時間拿去做一些比較深入的分析或是實作都比較划算，真的是很好用。<br />
<br/><br />
雖然現在還沒有玩的很透徹(我直接看官方API看了好幾天= =，因為台灣都沒有Rails 2.0以上的書，真是太該死了，就當練習吧! )，但是它基本好用的地方我已經了解到了，就差語法和API的呼叫就能夠比較上手了，加油!!</p>
<p>RoR Rocks => RRR</p>
]]></content:encoded>
			<wfw:commentRss>http://eragonj.hax4.in/blog/ror-rocks.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[RoR] 幹</title>
		<link>http://eragonj.hax4.in/blog/ror-%e5%b9%b9.html</link>
		<comments>http://eragonj.hax4.in/blog/ror-%e5%b9%b9.html#comments</comments>
		<pubDate>Fri, 12 Feb 2010 06:57:39 +0000</pubDate>
		<dc:creator>EragonJ</dc:creator>
				<category><![CDATA[RoR]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[32bit]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[相容性]]></category>

		<guid isPermaLink="false">http://eragonj.hax4.in/?p=196</guid>
		<description><![CDATA[Tweet 為了這個東西，我不知道死了多少腦細胞， 一開始為了yml的問題，我不知道搞了多久，最後發現是Vim設定上沒有設好，導致RoR一直出錯，再來就是因為64bit和32bit的問題，因為「the Ruby interpreter bundled in XCode 3.0 is in fact only compiled as a 32-bit i386 executable」，很好，我用我的64bit版本的Mysql，就因為這樣死在這邊，GOOD。 最後把Mysql換回32bit，好棒，RoR終於可以讀Mysql的資料了耶~我的所有資料庫資料也因此全部消失了，耶~中間也花了好幾個禮拜的時間搞書和安裝設定一大堆相容性的問題，版本的差異也是個大問題，時間都不用錢的，超棒。 重要文章Link1 重要文章Link2 結論，為了這個RoR，我覺得，「得不償失」，幹。]]></description>
			<content:encoded><![CDATA[<div class="bottomcontainerBox" style="border:1px solid #808080;background-color:#F0F4F9;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Feragonj.hax4.in%2Fblog%2Fror-%25e5%25b9%25b9.html&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:80px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://eragonj.hax4.in/blog/ror-%e5%b9%b9.html"></g:plusone>
			</div>
			<div style="float:left; width:95px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://eragonj.hax4.in/blog/ror-%e5%b9%b9.html"  data-text="[RoR] 幹" data-count="horizontal" data-via="EragonJ">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div><p>為了這個東西，我不知道死了多少腦細胞，<br />
<br/><br />
一開始為了yml的問題，我不知道搞了多久，最後發現是Vim設定上沒有設好，導致RoR一直出錯，再來就是因為64bit和32bit的問題，因為「the Ruby interpreter bundled in XCode 3.0 is in fact only compiled as a 32-bit i386 executable」，很好，我用我的64bit版本的Mysql，就因為這樣死在這邊，GOOD。<br />
<br/><br />
最後把Mysql換回32bit，好棒，RoR終於可以讀Mysql的資料了耶~我的所有資料庫資料也因此全部消失了，耶~中間也花了好幾個禮拜的時間搞書和安裝設定一大堆相容性的問題，版本的差異也是個大問題，時間都不用錢的，超棒。<br />
<br/></p>
<div style="text-align:right">
<a href="http://cho.hapgoods.com/wordpress/?p=158">重要文章Link1</a><br />
<a href="http://www.trap17.com/index.php/mysql39s-default-root-password_t31717.html">重要文章Link2</a>
</div>
<p><br/><br />
結論，為了這個RoR，我覺得，<del datetime="2010-02-12T13:21:23+00:00">「得不償失」</del>，幹。</p>
]]></content:encoded>
			<wfw:commentRss>http://eragonj.hax4.in/blog/ror-%e5%b9%b9.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

