Time of Update: 2017-01-18
通過使用鉤子方法,可以讓我們在Ruby的類或模組的生命週期中進行幹預,可以極大的提高編程的靈活性。與生命週期相關的鉤子方法有下面這些:類與模組相關 Class#inherited Module#include Module#prepended Module#extend_object Module#method_added Module#method_removed Module#method_undefined單件類相關
Time of Update: 2017-01-18
rack是ruby伺服器和rack應用程式之間的一個架構,rails,sinatra都是基於rack構建的,都屬於rack應用程式。rack提供了一個標準的介面,用於與伺服器進行互動。標準的rack程式是一個可以響應call的對象,可以是對象、Proc、lambda甚至是method,它接收env參數(環境對象),返回一個數組,數組包括: 狀態(status),http響應狀態代碼 可以是hash,為http的header資訊
Time of Update: 2017-01-18
線上web應用程式開發目前有許多正流行的架構. 也有許多不同類型的架構,比如那些擁有大量外掛程式,可以讓你更加快速的迭代 (比如 Rails),或者還有其它非常簡單和低層級的 (比如 Flask).web應用程式開發中兩個相對而言更加流行的架構是 Ruby on Rails 和 Laravel. 它們兩個都是非常成熟的項目,已經面世相當長一段時間了 . Ruby on Rails 在2005年12月被引入,而 Laravel 則是2012年2月
Time of Update: 2017-01-18
大資料操作中涉及到資料清洗步奏還是用指令碼處理比較方便,下邊介紹一下pig載入hdfs檔案後調用ruby指令碼處理資料,再返回資料流至pig中處理的一個簡單案例。注意:ruby的串流用到wukong這個gem包,相關下載: https://github.com/mrflip/wukongpig中載入分布式檔案調用ruby串流: 複製代碼 代碼如下:log = load '$INFILE' using PigStorage('\t');define tracking_parser
Time of Update: 2017-01-18
郵件伺服器接收到郵件後,service push通知程式。有什麼辦法實現嗎?1、用戶端輪詢2、伺服器主動推送。首先熟悉一下,收發郵件的協議: Net::SMTP(發送郵件) Net::POP3(內送郵件)
Time of Update: 2017-01-18
最近在學習Rails,因為學習的java為入門語言.些許的不太適應.特別是Ruby的Hash.不過細細的想想就通了.基本上都是通的Key-Value.除了剛開始不太適應寫法沒什麼大的問題.這個是我在網上看到的一篇日誌.1. 如何建立Hash? 複製代碼 代碼如下:x = Hash.new x = {} x = {:a => 1, :b => 2} 這些都是建立Hash的方法。 第一個和第二個一樣,表示建立空的Hash. 第三個表示建立的Hash,有2對鍵/值。2.
Time of Update: 2017-01-18
總結一下工作中遇到的類擴充:1、類繼承: 當多個類公用很多方法的時候可以將公用方法部分抽取出來,需要的類做相關繼承。例子:複製代碼 代碼如下:class A < ActiveRecord::Base def a p "it was a " endendclass B<Aendclass C<AendB.new.a
Time of Update: 2017-01-18
在ActiveRecord可以用很方便的聲明方式來定義model之間的關聯關係,例如:複製代碼 代碼如下:class Topic < ActiveRecord::Base has_many :posts belongs_to :userendhas_many和belongs_to其實是Topic類的class method,標準寫法是:複製代碼 代碼如下:class Topic < ActiveRecord::Base
Time of Update: 2017-01-18
1、String對象定義String對象的定義可以使用""和'',對於單純的字串,推薦使用''進行定義,效率比""高,""與''的區別在於,''內的字串定義後就是最終形態,即使如\n分行符號,也會原樣輸出,而""更像是一個運算式,解析器會針對其中的特殊字元進行處理,然後才會輸出,如下範例程式碼:複製代碼 代碼如下:i = 100s1 = 'The value of i variable is #{i}!\n' #The value of i variable is #{i}
Time of Update: 2017-01-18
1、關鍵字關鍵字不能用於定義變數或者常量,module,class,def , undef,defined?,if ,then,else,elsif,case ,when,unless,for,in,while ,until,next,break,do,redo ,retry,yield,not,and,or,true,false,nil,rescue,ensure,super,self,begin,end,BEGIN,END,__FILE__,
Time of Update: 2017-01-18
Ruby中的變數有幾種形式,分別是局部變數、執行個體變數、類變數、全域變數,對於初學者來說,常常容易搞混,尤其像本人這種做java的,理解起來還是頭痛,經過仔細辨別學習,將這幾種變數的差異及使用情境總結如下:一、命名方式1.局部變數:小寫字母或者“_”開頭,如user,解譯器解釋到時才開始在記憶體中存在,一個良好的習慣是在進行變數定義時用nil進行賦值初始化,否則會出現類似undefined local variable or method `z'的錯誤;2.執行個體變數:@開頭,如@user,
Time of Update: 2017-01-18
開篇空即是色,色即是空。空空色色,色色空空,在Ruby語言中,萬物皆為對象。Ruby是一個物件導向的語言(Object Oriented
Time of Update: 2017-01-18
Ruby的case運算式有兩種形式:第一種形式接近於一組連續的if語句:它讓你列出一組條件,並執行第一個為真的條件運算式所對應的語句。第二種形式,在case語句的頂部指定一個目標,而每個when從句列出一個或者多個比較條件和if一樣,case返回執行的最後一個運算式的值;而且如果運算式和條件在同一行上的話,可以用then關鍵字來加以區分。
Time of Update: 2017-01-18
最近有個需求,需要根據一個字串當作一個類來使用,例如:有一個字串 “ChinaMag”,根據這個字串調用 類 ChinaMag下的方法。解決辦法:1.rails可以使用 constantize方法。複製代碼 代碼如下:pry(main)> 'ChinaMag'.constantize=> ChinaMagpry(main)> "Test::Unit".constantize => Test::Unit2.ruby可以使用 Object.const_get(“String”
Time of Update: 2017-01-18
LINUX作業系統: CentOS6.3 64bitRuby: ruby-2.0.0-p247一.安裝開發包(使用預設CENTOS更新源)複製代碼 代碼如下:# yum install openssl* openssl-devel zlib-devel gcc gcc-c++ make autoconf readline-devel curl-devel expat-devel gettext-devel二.關閉iptables和SELINUX複製代碼 代碼如下:# service
Time of Update: 2017-01-18
在使用ruby/rails的過程中,確實發現有時效能不盡人意,如產生一個擁有600項的item的3層樹形結構目錄要花去20ms,為提高效能在學慣用c/c++寫ruby模組的過程中,認識了swig,rubyInline等一系列協助編寫c/c++來提升ruby效能的協助工具輔助。rubyInline用於內嵌c/c++程式,簡單快捷,swig則協助我們更容易地用c/c++寫出獨立的ruby模組。swig的入門使用方法目標:用swig/c++編寫一個ruby模組Test,並提供add方法作加法運算。相關
Time of Update: 2017-01-18
前面有一篇文章講到過用git的hook部署應用,hook的方法有一個缺陷就是每次都要到伺服器去修改一下hook對應的設定檔,這個設定檔是與當前倉庫分離的,調試上會有一些麻煩,藉助ruby的一個部署工具mina可以快速的在伺服器部署nodejs應用。安裝mina複製代碼 代碼如下:gem install mina安裝之後,它需要一個設定檔,預設情況下是目前的目錄的config/deploy.rb簡單的配置複製代碼 代碼如下:require 'mina/git'require
Time of Update: 2017-01-18
前兩天在“部落格園”上看了一篇文章“PHP基礎教程”,介紹PHP的,感覺挺好。D瓜哥在學Ruby,正好也寫一篇“Ruby入門教程”。需要說明一下,這篇文章適合有編程基礎的,但是沒接觸過Ruby的新手。而且,這篇文章側重入門,老鳥可以直接飛過。(如果能幫忙檢查一下是否有描述不當,甚至錯誤的地方,也歡迎來踩兩腳。D瓜哥感激不盡。)Ruby環境搭建 在Windows下,搭建Ruby環境,比較簡單的方法是在“RubyInstaller”上下載一個合適的版本(D瓜哥使用的是最新版),直接安裝就可以了。
Time of Update: 2017-01-18
JRuby 1.7.14 發布 ,此版本現已提供下載:http://www.jruby.org/downloadJRuby 1.7 主要是為了相容 Ruby 1.9.3 版本,改進記錄如下:解決了 30 個 issues修複了 Jar 檔案源潛在的記憶體流失問題因為在 Rails 應用啟動比較慢,所以預設禁用 invokedynamicload/require 內部重構和簡化解決了一些相容性問題1.7.14 修複的 bug:#1923 - String#start_with?
Time of Update: 2017-01-18
重點關注private與protectedpublic預設即為public,全域都可以訪問,這個不解釋privateC++, “private” 意為 “private to this class”, 但是Ruby中意為 “private to this instance”.意思是:C++中,對於類A,只要能訪問類A,就能訪問A的對象的private方法。Ruby中,卻不行:你只能在你本對象的執行個體中訪問本對象的private方法。因為Ruby的原則是“private意為你不能指定方法接收者”