Latest

form_tag 是啥?跟 form_for 有什麼不一樣?

一般在Rails的app當中,常會看到form_tag的用法,基本上就是為了傳送http的POST request使用,就像我們在瀏覽器中直接輸入網址就可以發出GET request一樣。 form_tag 基本上,一個form_tag會長這樣: <%= form_tag sessions_path do %> <% end %> 這樣基本的code就會產生: <form action="/sessions" method="post"> </form> 簡單來說,我們就是在這樣的表格中送出需要的變數。例如一個登入表格: <%= form_tag sessions_path do %> Name: <%= text_

Ruby雜湊(Hash)和陣列(Array)的指向特性

在Ruby當中如果把相同的變數分配到兩個不同地方,可能利用物件的特性,在兩個地方針對同一個變數進行修改。 一般的複製變數 如果將一個變數指定到另一個變數,該變數會用「複製」的方式指定過去。意思是說原本的物件不會受到影響。 # 當a指定到b的時候,變數會複製過去 # 如果改變b的內容,a並不會跟著改變 a = 10 b = a b += 10 a # => 10 Hash和Array是指向變數 但是對Hash來說,指定到不同其他變數時,在不同地方編修該變數,都會互相影響。以Hash為例: a_hash = {} b_hash = a_hash b_hash[:hello] = "world" a_hash # => {:hello => "world"} # hash並不是用「複製」

把Ruby script變成執行檔(executable)

那些青澀的日子 平常我們在撰寫Ruby script時,大概都是遵循以下模式: 1. 建立一個hello.rb檔案 2. 輸入以下內容: puts "hello world" 3 在command line當中執行: $ ruby hello.rb 但日積月累下來,我們都慢慢變成資深的Rubist,身為一個專業的Rubist,當然要用一些更方便的作法來執行及管理scripts。 1. 省去ruby指令 首先,每次執行都要在前面加上ruby是很擾人的事情,我們先將它拿掉。 在hello.rb當中,加上第一行環境變數: #!/usr/bin/env ruby puts "hello world" 接著在該檔案的目錄底下,在Terminal輸入: $ ls -l hello.rb 接著會出現以下結果: -rw-r--r-- 1

現在會的程式語言,價值還能保留多久?

Inside上面有一篇文章,是一位大陸記者來台灣參加Computex的心得,簡單來說,他覺得Computex的格局一年比一年小,產品也不再讓人驚艷。儘管這篇文章充斥著許多個人偏見,但有一段特別讓我有感觸: PC早已不再是寵兒......大眾的興趣早已轉移到智慧手機、物聯網、可穿戴設備、3D 列印等領域,雖然此次ComputeX 增設智慧可穿戴論壇和物聯網展區,但產品並沒有什麼突破性進展。 我想這樣的趨勢不只在硬體產業,在軟體產業也是相同。在Kickstarter和Product Hunt上面都可以看到無數很有創意的軟體,一直在突破我們的思維。在這樣變遷快到不行的環境底下,我們身上會的技能可能比我們想的壽命更短。有沒有可能再過幾年之後,我們目前會的技能也會是別人嘲笑的對象? 習慣在改變 對像我這樣一個開發者來說,最大的工具就是程式語言,當然要戰程式語言是戰不完的。但在了解整個軟體開發的歷史以後,有一個特別讓我震驚的,就是開發者的習慣:總是有一個語言會取代另一個語言。 例如Perl一直都是撰寫系統腳本常用的語言,但近幾年網路上也出現許多聲音,認為Perl並不如Ruby好讀

如何在Github上貢獻一己之力給其他專案?

如果你對於某個專案有自己的想法,可以嘗試發pull request,讓專案管理員去merge。 這邊用朋友的ngLoading專案當做示範。流程如下: 1. 將專案Fork一份到自己的帳號底下 2. 利用各種commit修改專案 3. 發出pull request,讓對方進行merge 不過首先,你要有Github帳號 1. Fork 首先,找到你要貢獻的專案,點選右上角的fork按鈕: 接著他會出現在你的帳號底下,就可以進去用clone方式複製到自己本機進行修改了。 溫馨小提醒git clone指令: $ git clone ssh_clone_url ssh_clone_url是你自己fork過來專案的clone url,如果忘記在哪的話請在瀏覽器中搜尋clone URL就會找到了。 2. Commit 改完code之後進行commit,通常會另開branch,不過如果你夠有把握,也可以直接commit到現有的branch上面。 3. Pull Request 完成以後,到repo頁面,點選右邊的pull request: 接著在畫面

影片教學課程 RSpec-Rails (基礎篇) 上架

RSpec課程來囉!從5/10開始錄製,到6/4終於完整上架、發佈,算是我第一個比較完整的Ruby相關課程。希望大家多多支持喔! 課程簡介 RSpec是一套Ruby語言底下的自動化測試框架,主要用於測試程式執行是否符合我們想要的結果,可在實際手動執行之前先讓程式自動進行測試,節省開發和維護的時間。 由於RSpec強調其寫法非常口語化,有別於一般的測試語法,又稱BDD(Behaviour driven development)開發框架,意思是開發者可以將RSpec視為一種規格撰寫的說明書。在實際開發之前先將規格寫好,像是說明書一樣,接著再照這份「說明書」進行開發。這也是為何RSpec要將自己的每一個測試單元都稱為「specification」,字面上就是「規格」的意思。 RSpec算是Ruby語言當中非常受歡迎的測試框架,與另一套Cucumber同樣都強調其語言表現方式非常自然。假如想要了解RSpec到底如何能夠幫助開發者,一起來看看教學影片吧! 教學內容 本系列教學會說明: 1. 在Rails當中要如何使用RSpec撰寫測試 2. 使用RSpec測試scaf

rspec

RSpec-Rails (基礎篇)(7): 撰寫整合測試

RSpec-Rails教學(基礎篇)全部內容 單元測試(Unit test)和整合測試(Integration test)的差異。 1. 單元測試針對程式的各個最小單位進行測試,在Rails當中通常測試的最小單位是method,要確保每一個method的內容都可以順利進行。尤其抓錯字在unit test中非常重要!可以省下非常多時間!(本人親身經歷) 2. 整合測試主要是看大方向,通常直接從網址進行GET或帶入變數,確保回傳的結果是正確無誤的。 3. 兩種測試一樣重要,如果只有單元測試,我們很容易忽略掉每個class之間互動可能發生的問題。 4. 如果只有整合測試,那發生錯誤的時候會很難抓問題出在哪,難度就跟我們直接下去開瀏覽器測試一樣,實用性較低。 spec/requests/posts_spec.rb require "rails_helper" RSpec.describe "posts", :type => :request do