rails 101 練習(2)

從第五章建 scaffold 開始,在執行 rake db:migrate 時撞到牆。rake 吐出錯誤訊息:

ERROR: ‘rake/rdoctask’ is obsolete and no longer supported. Use ‘rdoc/task’ (available in RDoc 2.4.2+) instead.

找了好多文章,都說要用移除現有的 rake,安裝回 rake 0.8.7 才可以。我是卡在無法移除 10.0.3,後來是找到 stackoverflow 的這篇,說要用 rvm use @global && gem uninstall rake -v 10.0.3。執行以後先按 Y,再按 N,再執行 rake 會有錯誤,所以我再執行一次 gem install rake -v 0.8.7 來安裝。

回到專案目錄下再次執行 rake db:migrate,出錯,說不滿足條件,要重新 bundle install,原來 gem 的 requirement 會紀錄在 Gemfile.lock 裡,修改完 Gemfile.lock ,執行 bundle install 以後,就可以執行 rake db:migrate 了。此時資料庫是用 sqlite3,路徑在專案目錄的 db 下,名稱是 development.sqlite3 。

今天就做到 5.4.5。

rails 101 練習(1)

一兩年前就買了Rails 101,只翻了一點點,就擱下了。 最近朋友也買了,正在練習,因為他是 Linux 新手,就撞了蠻多牆,問了我不少問題,是故,我也跟著看和做了一次。我的環境是 Ubuntu 12.04。

  1. 安裝必要的套件:sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev libmysqlclient-dev libbuilder-ruby
  2. 安裝 rvm:curl -L https://get.rvm.io | bash -s stable –ruby ,這是用 curl 抓取 script 內容,並且導向到 bash 去執行,-s 表示 script 會從 stdin 來,stable –ruby 是給 script 使用的。
  3. 初使化 rvm 環境:source .rvm/scripts/rvm ,這行很重要,之後重新開 terminal 時,都要確定有導入 rvm 環境,要不然會有錯誤。
  4. 安裝 ree:rvm install ree ,然後設為預設: rvm ree –default 。(rvm 可以安裝不同版本的 ruby,像 jruby, ironruby, ruby 等等的,很方便)
  5. 新增 ~/.gemrc,內容是 gem: –no-ri –no-rdoc ,這樣之後 gem install 時,就不產生 doc 檔案,這部份是參考 Ruby on Rails 實戰聖經裡的建議做的。如果不加這個,會撞到牆,說文件產生不出來,需要安裝別的套件才可以。有在另外一台電腦上試過,要先 gem install rdoc-data,再 rdoc-data –install ,應該就可以。反正暫時不會用到 doc,不如就不安裝。
  6. 安裝 rails:gem install rails -v=3.0.7
  7. 安裝 mysql gem:gem install mysql
  8. 書裡提到不要用預先編譯好的 Imagemagick,而要自行編譯,沒說原因。這步驟我跳過了。
  9. Apache 跟 POW 我也都跳過了,目前是練習,所以先用 rails server 頂著就好。
  10. 建新專案跟檢查:rails new forum_demo && cd forum_demo && bundle check && bundle install
  11. 啟動 web server:rails server ,然後開啟瀏覽器,網址輸入 http://localhost:3000 就可以看到頁面。
  12. 新增 controller 跟頁面,就是照書上講的,會碰到狀況的,就是要先刪除掉 public/index.html,這樣才會出現新增的頁面。原本沒注意到要刪除,我想說因為是 pages controller,就用 http://localhost:3000/pages/welcome ,理論上應該會看到,結果卻說 route 未定義,應該是還有地方沒設定吧。

今天先做到這裡為止。

試裝FireApp

FireApp 是可以試用的,只是網站上只提供付費下載,$14 美金,算是很便宜,想要試用的話,得自行編譯。編譯的步驟不太難,對 ruby/rvm/git 熟的人,應該一下子就裝好了。

以下是我的安裝步驟,我的環境是 Ubuntu 12.04 LTS

  1. 下載 FireApp:git clone https://github.com/handlino/FireApp.git
  2. 下載 submodule:cd FireApp && git submodule init && git submodule update
  3. 解決 submodule 問題,我這邊有遇到無法取得 tka-serve 的問題,後來是參考 StackOverflow 上的這篇才解決,先 git log --oneline -p -- lib/ruby/common/tka-serve 取得第1行的 SHA1 ,然後用 git checkout <sha1>~ — lib/ruby/common/tka-serve 取得 tka-serve 代碼,然後重新執行 git submodule update ,最後 git commit 即可。
  4. 安裝 JDK6/rvm/bundler/rake/gems/nodejs:sudo apt-get install openjdk-6-jdk ruby-bundler rake nodejs ruby-rvm ruby-gems ,nodejs 是給 sass/scss 用的。
  5. 下載 rawr:bundle install rawr
  6. 下載 jruby:rvm install jruby-1.6.7
  7. 切換 JDK 為 1.6,官方建議用 1.6,所以如果用 1.7 的話,得用 update-alternatives –config java 切換;我原本是裝 openjdk-7-jdk,裝完 openjdk-6-jdk 以後,順序有自動調整為 1.6 優先,為了安全,還是檢查一下。
  8. 編譯:bundle exec rake rawr:bundle:linux
  9. 啟動:bin/startJar-linux.sh

覺得好用的話,要記得去購買,讓這個軟體更好。

安裝的心得:

  • 原來 rvm 是有點類似 python virtualenv 的東西,可以用來安裝/執行各種版本的 ruby/jruby/rake ,我卡在這邊卡了好久。
  • git submodule 要多練習才是。

試用的感想,這比較像是 template 產生器加上即時 web server 的快速專案產生器,有點像是 Adobe 之前釋出的 bracket,bracket 比較偏重於即時就能看到結果,FireApp 的好處是結合 sass/scss 與 RoR 的 template system,在 HTML 的編寫可以搭配 ZenCoding,這樣的組合可以說是如虎添翼。

Firefox 18 的 PDF Viewer

看到新聞說 Firefox 18 已經有內置 PDF Viewer 了,找了選單,卻找不到怎麼開,用開新檔案,只會出現詢問下載位置的視窗。

找了一下,找到這篇 Show PDF inline Test Plan 才發現 Status 標為 Disabled until Firefox 19,所以是已經內置,但是功能沒打開。就心血來潮,在網址列輸入 about:config 找 pdf,果然看到 pdfjs.disabled 被標為 true,就把這個值改為 false,然後重新啟動 Firefox,就可以從「開新分頁」>「開啟檔案」去開啟 pdf 了。

不過,後來我還是把這個值給回復為 true 了,Mozilla 開發小組把這功能 disable 應該是有原因的,就等 Firefox 19 再說吧。

raspberry pi 的聲音

我是用 HDMI 接電視,我有參考過這篇:Raspberry Pi測試音訊介面 了,但還是沒有聲音,爬文以後,發現是要在第一個 partition 的 config.txt 裡去設定 hdmi_driver=2 (如果是在 raspberry pi 上,是在 /boot/config.txt ),設定完,重新開機就可以用 aplay 來播放聲音檔案了。

目前還需要解決的問題有:

  • 無線網路卡
  • 鍵盤+滑鼠+無線網路這樣會導致電力不足的樣子。

 

升級 wordpress 到 3.5,Update network 出現 SSL certificate problem

升級 3.5 以後,要 Update network,卻發現下面這個錯誤。

Warning! Problem upgrading http://domain.tld/blogs/blogname/. Your server may not be able to connect to blogs running on it.
Error message: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

是沒錯,因為是自家用的網站,CA cert 是自己簽發的,會有驗證有問題的情況是正常。但為什麼之前都沒有這問題,怪。總之,後來查了好一會,知道應該是跟 sslverify 有關係,就找到 wp-admin/network/upgrade.php 裡呼叫 wp_remote_get 的地方,為第二個參數加上 sslverify => false 就可以了。
[php]$response = wp_remote_get( $upgrade_url, array( ‘timeout’ => 120, ‘httpversion’ => ‘1.1’, ‘sslverify’ => false ) )[/php]

參考資料:

git-cola win32 安裝指南

git-cola 在 github 上的網頁寫的算是清楚,就是先裝 msysgit 、 python 、 pyqt 以後(pyqt 的話要看 python 版本來下載對應的安裝檔),最後再下載 git-cola installer 進行安裝就可以。

安裝 git-cola 的時候,會問你 pythonw 的路徑,這個就看你是安裝 python 2.6 還 python 2.7,一般就是在 c:\python26 或 c:\python27 下;接著會問你 git 所在的路徑,我這邊踩到雷,傻傻的選了 C:\Program Files\Git\bin\git.exe ,然後就安裝完成了。

安裝完成以後,程式可以執行,但是在進行 push/pull 時,卻發生卡住的情況。我在想這應該是 git 的問題,因為把程式都關閉以後,用「工作管理員」打開看,git.exe 還在執行。我在猜想應該是有些環境變數沒有設定到,導致 SSH 有問題而造成 git push/pull 失敗。接著我就試著去找設定 C:\Program Files\Git\bin\git.exe 的地方,找了好一陣子,才找到原來安裝程式在問完 git 路徑以後,直接把這個設定寫在 git-cola/git-dag 的捷徑裡,所以就右鍵點擊捷徑以後,選「內容」去修改為 C:\Program Files\Git\cmd\git.cmd 這個 msysgit 提供的,有設置環境變數的批次腳本檔即可。

Miro 的 Proxy 設定

Miro 是個好東西,但是很不幸,公司的網路政策不允許下載串流影音檔案,也就沒辦法在 Miro 裡搜索。官方的說法也很妙,就是叫你開控制台的網際網路設定去改 proxy。既然官方說法這麼無奈,只好自力救濟。

印象中,Miro 好像是用 xulrunner,但不很確定,就打開安裝所在的資料夾來看,有看到 etc 資料夾,裡面有個 gtk-2.0,喔~這是用 GTK 寫的;等等,看到 xulrunner 資料夾了,再去看裡面,有個 greprefs.js ,打開看看,賓果,是設定檔。於是就找了 network.proxy,改了下面幾個設定:

  • network.proxy.type 改為 1:依照 Mozilla 的說明,1 表示手動指定 proxy,原來的值是 5,表示使用系統預設值。
  • network.proxy.http / network.proxy.http_port :改為指定的 proxy 與 proxy port。
  • network.proxy.ssl / network.proxy.ssl_port :這是 SSL 的,一樣改成指定的 proxy 與 proxy port

這樣就大功告成了,突破!!

批次改 wordpress 文章可見度為 Private (私有)

有在用 SEO 的話,這功能應該是用不到,剛好有用到,就研究了一下。

一開始是想,有 plugin 可以做到這件事情,所以就找 plugin 看看。先找到 PrivatePostDefault,這可以把預設發文的可見度改為私有,但沒找到可以批次修改的 plugin。胡亂找了半天,終於發現我是白痴,原來早就有這功能,只是不知道怎麼用。先選到 All posts,然後選右上角的 screen options,設一頁可顯示的筆數,這時候是愈多愈好。保存以後,選 Public,勾選所有文章,在 Bulk action 的地方,改選 Edit,然後按下 Apply,再把 Status 改為 Private 即可。打完收工。

scraperwiki

scraperwiki.com 是一個可以讓你寫網路爬蟲程式的網站,在網站上寫,立刻就能執行並看到結果。語言的話可以用 PHP/Python/Ruby 這三種程式語言,而資料是儲存到 sqlite3 資料庫裡。