• 為你自己學 Ruby on Rails at 2017年07月14日

    哪裡,大家客氣了

  • 可惜跟日本 RubyKaigi 接得太近,不然也許可以去分享個 Elixir 方面的主題 :)

  • 為你自己學 Ruby on Rails at 2017年05月25日

    哈哈,我不是日本人,所以姓氏只有第一個字 ,至於「老師」二字就可以不用了 (但我去日本出差的時候都會自介 私は 高見 と申します 就是了)

  • 為你自己學 Ruby on Rails at 2017年05月24日

    是的,而且我覺得 c9 功能上比 codeanywhere 來得優秀,但缺點就是註冊的時候需要先輸入信用卡號,這點對大部份的人可能不是問題,但我在學校帶課程的時候,常會遇到大學生沒有信用卡的問題而無法使用。倒是 codeanywhere 就沒這困擾了 :)

  • 為你自己學 Ruby on Rails at 2017年05月24日

    有 Mac 電腦是最好,但沒有的話也不會強求。Windows 用戶通常會請他們直接轉用像 https://codeanywhere.com/https://c9.io/ 之類的環境,就以學習上來說沒有什麼太大的問題。

    用 Docker 或虛擬機也是個選項,但對新手來說反而可能造成「為了學 Ruby/Rails 反而得先學會 Docker」的額外負擔

    另外,我之前個人對 Rails Installer 的印象停留在「光是 bundle install 就會報錯」的階段,最近試了一下好像沒這問題了,最近有同學上課是就是使用 Rails Installer,似乎沒出什麼問題。

    供您參考 :)

  • 為你自己學 Ruby on Rails at 2017年05月24日

    對大家有幫助就好 :)

  • 如果你不會在測試的過程中變動你的字串的話,可在文件的最前面加上一行

    # frozen_string_literal: true
    

    這一行讓整份文件的字串都變成 immutable (設定成 freeze 狀態),可加快一點點點點點點點點的速度 :)

  • 一、Ruby 的方法呼叫,常常會適時的省略小括號:

    例如

    def say_hi_to(name)
      puts "hi, #{name}"
    end
    
    say_hi_to("eddie")
    

    但我們通常會寫成:

    say_hi_to "eddie"
    

    把小括號省略了,這在 Ruby 是很常見的寫法

    二、Ruby 並沒有「屬性」(property/attribute)這樣的東西:

    class Girl
      def initialize(age)
        @age = age
      end 
    end
    
    little_girl = Girl.new(25)
    

    雖然這個 little_girl 看起來好像有 @age 變數,但不代表它是可以直接存取的屬性。硬是要用 little_girl.age 問她年紀,或是要用 little_girl.age = 18 設定她的年紀,她都會賞你一巴掌,給你錯誤訊息的。

    little_girl.age 你以為是讀取 little_girl 上的 age 屬性,但事實上是 little_girl.age() 方法,只是小括號被省略了。little_girl.age=18 你以為是設定 little_girl 的 age 屬性,但事實上是 little_girl.age=(18) 方法,只是小括號被省略了。

    說穿了 Ruby 一堆東西都是方法!

    你以為 1 + 2 是簡單的數學運算嗎? 其實它是 1.+(2),它是對數字物件 1 送了一個 + 的訊息,並且把數字物件 2 當做參數傳給它

    好啦,即然知道它們都是方法,那要怎麼定義它們呢?

    class Girl
      def initialize(age)
        @age = age
      end 
    
      # 因為它會取得 instance var,故又稱之 getter
      def age
        return @age      # 這邊的 return 通常也會省略
      end
    
      # 因為它會設定 instance var,故又稱之 setter
      def age=(new_age)
        @age = new_age
      end
    end
    

    請把等號當做一般的字母看待, 等號可以是方法名字的一部份

    這個方法就叫做 age=,要呼叫它就是用 age=(18),沒錯,就是連等號一起呼叫。

    所以,標準形態應該長這樣:

    little_girl.age=(18)
    

    但因為上述第一項,Ruby 可以省略小括號,所以可寫成:

    little_girl.age=18
    

    然後,Ruby 又有幫忙加了一些語法糖衣,讓你在中間加一些空白字元也是可以的:

    little_girl.age = 18
    

    最後就會讓你看起來像是在設定 age 屬性了。

    如果你懶得寫這樣的 getter/setter,可用 attr_readerattr_writerattr_accessor 來替你產生 getter/setter。

    不知道這樣回答有沒有讓樓主清楚一些 :)

    若有錯再請不吝指正

  • @drine 1 == x 一來可以避免寫出 1 = x (不小心少了一個等號) 的問題外,再看看以下這個有點極端的例子:

    class Demo
      def ==(other)
        true
      end
    end
    
    obj = Demo.new
    
    p obj == false  # true
    p false == obj  # false
    

    雖然平常沒事不會這樣搞,不過上面這樣的寫法的確會造成交換過來寫會得到不同的結果 :)

  • 剪接後製中,請再稍候一些時間 :)

  • 终于也忍不住了 at 2014年04月29日

    http://blog.eddie.com.tw/2013/06/29/about-hhkb-pro2/

    小的我也來偷偷曬一下自己的使用心得 :)

  • http://wiki.fnil.net/images/3/3b/Ruby_object_model.png 其實這張圖片看懂,ruby 的 object model 就比較清楚了 :)

  • Railsgirls Taipei#02 活動分享 at 2013年12月09日

    支持 :)

  • PEP 302是什么? at 2012年08月13日
  • 指的是"Ruby"的benchmark跟profile嗎?

  • 同学们是如何处理异常的 at 2012年07月10日

    要寫出比較有自信的代碼,我覺得"寫測試"是一個不錯的選擇 :)

  • 如果你有安裝surround,而且有裝rails.vim的話:

    1. 進入visual mode把你要框的字選起來
    2. 按大寫S後再按等號即可