Heroku is a great host for RoR. But still has some problems
Heroku的簡便,其實也造就了他的問題.
因為不是第一次被人推薦了,所以就去官網上看看.
不過,看了就覺得並不是太想用.
除了價格昂貴,再來就是他的優點,其實也是缺點.
Heroku的優點是兩面刃
由於你只要註冊好Heroku,然後 :
sudo gem install heroku
heroku create yourapp
當你要建好專案要上傳 :
git push heroku
就上傳好了
當要做些工作,比如migrate :
heroku domains:add yourdomain.com #(加網域名,應該是加到DNS?) heroku rake db:migrate heroku bundles:capture
可是,他的方便也是不便.
我是不太喜歡一直和Host方溝通,比較喜歡一次就擁有很多自主權.
所以,當有問題,我該寫信去???
問題1, 如果想增加sub domain? 更改MX records,CName,etc...?
問題2, 原先配置為Thin+Nginx. 若想改用其他?
問題3, 目前尚未支援Custom SSL.
問題4, 太貴....
問題5, 還沒想到. 如果你有解答,歡迎討論互動.
就像Xdite說的,在我看來,現在還是Project比較適合. 若要Production,太貴,也不太適合.
--後記 :
初碰Heroku可能面臨問題.
Q : Install?
A : $>sudo gem install heroku
Q : Create?
A : $>git init
$>heroku create
Q : Upload?
A : $>git push heroku YouBranchName(master)
Q : See?
A : $>heroku open
Q : No ssh public key found in /root/.ssh/id_[rd]sa.pub. You may want to specify the full path to the keyfile.
A : ssh-keygen -t rsa
Q : Move Database?
A : $>sudo gem install taps
$>heroku db:push
Q : Rename App?
A : $>git remote rm heroku
$>git remote add git@heroku.com:YOURAPPNAME.git
Q : Manage Custom Gems?
A : 1. Create a file ".gems" under folder
2. Add "yourgem --version x.x.x --source xxxxxxxx" (ex : geokit --version '>=1.5.0' )
Each Gem one line.
3. "git commit -a" & "git push heroku xxx"
Textmate on Ubuntu9.04 – Gedit
寫Ruby, RoR的工具首推Textmate是毋庸置疑.
在Ubuntu上並沒有Textmate,但有替代方案 : Gedit (TextEditor).
Gedit是內建的, 如果你是9.04版本. 那麼更不需要安裝甚麼太多外掛.
其他的還有Theme,讓你的配色更好看.
還有自己遇到的一些問題. 希望有幫助.
Gedit Plugins
這些是網路上建議的外掛 :
Snippets - 點我下載 (9.04內建)
File Browser - 點我下載 (9.04內建)
Class Browser - 點我下載
Quick Highlight Mode - 點我下載
Word completion - 點我下載
Snap Open - 點我下載
也可以輸入下面指令,直接裝好一些熱門套件.
sudo add-apt-repository ppa:ubuntu-on-rails; sudo apt-get update; sudo apt-get install gedit-plugins gedit-gmate
下載完&解壓縮以後,在9.04下,全都丟到 /usr/lib/gedit-2/plugins 即可.
或是可以丟在某個資料夾內,然後開Gedit. Edit > Preferences > Font & Colors > Add
然後選你的檔案一個個加入.
一些讓你的Gedit看起來像Textmate的 Theme :
官方來源 :

下載DarkMate
(官方圖好像也掛了?)
下載Desert
(Gedit官方圖片掛了,有人有圖片煩傳給我,或告知. 感謝.)
下載Textmate
另外還有五個一組的Theme包. 下載請點我
分別有 :
Cobalt

Darkmacs

IDLE

Slush and Poppies

Twilight

其他來源 :

下載Tinge
如果還不夠,這裡還有更多. (部份重複)
Download them from GitHub
Gedit Highlight
再來就是設定一些ror檔案的highlight支援.
直接copy,然後貼在console下.
wget http://grigio.org/files/x-rhtml.xml; sudo mv x-rhtml.xml /usr/share/mime/packages
wget http://grigio.org/files/rhtml.lang; sudo mv rhtml.lang /usr/share/gtksourceview-1.0/language-specs/
惱人的RoR檔案Highlight問題
在安裝的過程中我自己遇到一個問題,就是erb顯示不正確.
你可以透過下列操作來修正.erb的highlight問題.
Console下輸入
sudo nano /usr/share/gtksourceview-2.0/language-specs/ruby.lang
找到
<property name="globs">*.rb</property>
修改成
<property name="globs">*.rb;*.rake;*.rjs</property>
然後存檔離開.
再輸入
sudo nano /usr/share/gtksourceview-2.0/language-specs/html.lang
找到
<property name="globs">*..html;*.htm</property>
修改成
<property name="globs">*.html;*.htm;*.erb;*.rhtml</property>
存檔離開.
再開啟Gedit,就應該顯示正常了.
--參考資料 :
RubyBuntu -4- Make gedit better than any IDE
Extend Gedit with amazing plugins
http://rorblog.techcfl.com/2008/04/19/erb-syntax-highlighting-in-gedit/
把Gedit打造為Linux下的Textmate
Textmate-like Gedit in few steps
HOWTO: add support for .rhtml, .html.erb, .rjs, .rxml, .builder
Textmate 官方首頁
Rails on Ubuntu 9.04 Installtion
由於在Ubuntu下安裝Rails是一件有點煩的事,還要ln, 而且有時候有lib相依問題.
不是單純 apt-get install ruby rails 就可以.
所以就把自己安裝的經驗寫下來,下次自己安裝方便,而也可以分享.
打開Console輸入,這樣安裝包含了 Ruby, IRB, RdoC, Mysql, Sqlite, Sqlite3, 以及Libs , Dev
sudo apt-get install ruby irb rdoc libopenssl-ruby mysql-server sqlite3 sqlite libsqlite3-ruby libsqlite-ruby libmysql-ruby ruby1.8-dev
到官方下載 Rails Gem 這篇文章時,Gem為1.3.5版,點我下載1.3.5.tgz.
將之解壓縮並在Console cd到資料夾下
ruby setup.rb
再修正9.04下的安裝路徑連結錯誤
ln /usr/bin/gem1.8 /usr/bin/gem
安裝Rails
gem install rails
安裝Rake 及 Mongrel
sudo apt-get install rake mongrel
打完收工,Done!!
完成之後,可以再參考這篇Textmate on Ubuntu - Gedit
關於RUBY :Symbol的定義
對於初學RUBY的人,不管是新手或有程式底子,也許多少都會對Symbol的功用感到疑惑吧,而我也是那麼一個.
翻了很多文章,在網路上的高手解釋之後,我多少大概瞭解SYMBOL的功用.
打開command line輸入ri Symbol看看它的解釋.
| Symbol objects represent names and some strings inside the Ruby interpreter. They are generated using the :name and :"string" literals syntax, and by the various to_sym methods. The same Symbol object will be created for a given name or string for the duration of a program’s execution, regardless of the context or meaning of that name. Thus if Fred is a constant in one context, a method in another, and a class in a third, the Symbol :Fred will be the same object in all three contexts. |
這段解釋定義了Symbol為一個呈現"name"與"string"的object.
再看看ri所提供的Symbol範例 :
module One class Fred end $f1=:Fred end module Two Fred=1 $f2=:Fred end def Fred() end $f3=:Fred $f1.id #=>2514190 $f2.id #=>2514190 $f3.id #=>2514190
以上面這段程式看起來,不管f1,f2,f3都指向同一個物件.
這解釋了第一個特性,每個SYMBOL都只具一個實體,"唯一性"
再來,打開irb輸入下面代碼,讓我們看看它與字串的關係.
a= :str b= "str" a[0] #=> undefined method [] for :str:Symbol b[0] #=> 115 a.to_s[0] #=> 115 a.size #=> undefined method size for :str:Symbol
由上面的範例,我們可以知道Symbol跟String是不一樣的.
儘管我們可以將它to_s轉為String後再進行修改,但我們無法對Symbol直接修改.
(不過.... 在Ruby 1.9已經將Symbol加入了各種String的功能,如size,length甚至是Regexp, =~ ,所以Symbol和String是越來越像了.)
那麼,Symbol到底是幹麻的?
其實大多數人拿它來當Hash的key,或是name, identifier.
也許因為效能比較好,它是唯一性的. 再加上你不管到哪都是指向同一個物件,有點類似c指標.
而且1.9以後可以直接對Symbol作操作,更提高了Symbol的功能.
Symbol的用法,如同之前所說,如果你還有其他用法或見解,請一定要告訴我,大家一起進步.
--延伸閱讀
Digging into Ruby Symbols
Yet Another Blog about Ruby Symbols
Symbols, Strings, Methods, and Variables
Symbols Are Not Immutable Strings


