Ruby on Rails with Uploadify
在檔案批次上傳最早是使用Swf_upload. 但由於很難修改裡面的一些東西,而且只針對Flash.
後來尋找了一下,Plupload及Uploadify看起來比較好,有支援Falsh,SilverLight,Html5,Html4...etc
所以改用Plupload,"看起來"很好用,但實際上有一堆神秘的Bug.
最後改用Uploadify,雖然一樣有bug,但是都有解法.
最佳解法請參考 : http://railsfun.tw/viewthread.php?tid=257
其中在使用UploadifySettings時,遇到 InvalidAuthenticityToken的問題,這是Uploadify本身的問題.
解法很簡單,卻花我很多時間...
在被init的物件內加上 style='display:block;' 即可.
比如
--官方網展
http://www.uploadify.com/
--其他參考資料
1. http://railstips.org/2009/7/21/uploadify-and-rails23
2. http://jetpackweb.com/blog/2009/ ... degrade-gracefully/
Heroku send by Gmail
在Rails上透過Gmail寄信是蠻簡單的.
但網站搬到Heroku後最近發現似乎寄信有問題?
一查之下才知道要裝套件,官方網站其實就有,不過自己還是做個紀錄.
1.Install Plugin
$ script/plugin install git://github.com/adamwiggins/gmail_smtp.git
2.設定帳號
$ export GMAIL_SMTP_USER=username@gmail.com $ export GMAIL_SMTP_PASSWORD=yourpassword
3.設定Heroku
$ heroku config:add GMAIL_SMTP_USER=username@gmail.com $ heroku config:add GMAIL_SMTP_PASSWORD=yourpassword
完成.
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
Rails的Find SQL語法在多變情況下.
前陣子寫內部簡單的Search Engine,面對SQL其實突然有點失措.
在Rails底下,sql通常是下指令如
Find, Find_by.
傳統的是 Obj.find(:all,:conditions=>["sql command",vara ,varb ,varc])
然而有時要做進階的判斷,依據狀況可能有不同的參數&Conditions,又不想單純的find_by_sql.
如何改變conditions指令呢?
fcon=[''] fcon[0]="a like ? and b like ? and c like ?" fcon << params[:a] fcon << params[:b] fcon << params[:c] fcon[0]="d like ? and e like ? and f like ?" fcon << params[:d] fcon << params[:e] fcon << params[:f] Obj.find(:all,:condition=>fcon)
如此一來就不用find_by_sql,又可以達成conditions的變化.
關於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

