2016-04-26 47 views
-2

在「瞭解Ruby的難題」中,作者建議閱讀某些代碼並嘗試理解它。他們還建議,這將是困難的,但要寫下你對代碼有關的問題。唯一的問題是,我不知道如何獲得Google搜索後的問題的答案,所以我想我會試着在這裏發佈他們,看看有人能幫我解決問題嗎?讓我知道如果這不合適,我會嘗試找到另一種選擇。瞭解HTTParty配置

require 'httparty' 

class BaseWebService 
    include HTTParty 
    format :json 
    base_uri URL_to_mock_services 
    default_options.update(verify: false) 

    def self.get_data(extension = {}, url = {}, body = {}, query = {}) 
    url_string = combine_extension_and_url(extension, url) 
    do_get = -> (req_url, req_body, req_query) { get(req_url, body: req_body.class == String ? JSON.parse(req_body) : req_body, query: req_query) } 
    return_response(url_string, body.to_json, query, &do_get) 
    end 

在上面的代碼中,作者正在設置一個'模擬服務'的請求。作者正在使用HTTParty向服務發出請求。我有以下一些問題:

  • 爲什麼,如果我們需要HTTParty在我們的.rb文件,我們再 必須包括它的類內?它在整個班級中默認不可用 ?

    • format :json:這是要將我們從調用中獲得的任何響應格式化爲JSON對象嗎?
    • base_uri:這是每次我們創建BaseWebService類的新實例時自動調用嗎?如果不是,它是如何觸發的?
    • default_options:我看到,指出

      返回屬性的值default_options

      ,但我不知道這意味着什麼的HTTParty文檔。也不是它在這堂課中用於什麼?

    • 語法do_get = ->是做什麼用的?
    • 在類方法get_data中,作者使用req_url,req_bodyreq_query,但我無法在代碼庫中的任何位置找到這些變量或方法。你知道這些是如何使用的嗎?
+0

歡迎來到Stack Overflow。如果你被扔到狼羣,我強烈推薦閱讀其他教程(除了你正在閱讀的那本教程外)。探索其他代碼是很好的,但是你需要一些基礎知識,這些知識在其他教程中有介紹,並且你在問什麼。這不是一個「寫我的網站教程」,所以[我們希望你研究](http://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-expected-of-堆棧溢出用戶/ 261593#261593)。一旦你耗盡了教程和互聯網,那麼問問題就更合適了。 「[問]」是你的朋友。 –

回答

4

你是我最喜歡的球員,所以我會幫助你在這裏...

爲什麼,如果我們需要HTTParty在我們的.rb文件,我們再必須將其包含在課堂內?它在整個班級中默認不可用?

require關鍵字是Ruby尋找具有該名稱的文件並加載它的方式。

一旦需要,您現在可以從該文件/文件訪問類和模塊,例如HTTParty。

include在這裏做了非常不同的事情。你可以看到in HTTParty它實際上是一個模塊,當你在一個類(你的代碼中的BaseWebService)上你include 'AModule'你給你的類的實例訪問該模塊的方法。這意味着HTTParty模塊實現的方法(如get)現在可通過BaseWebService.new.get在您的BaseWebService類中獲得。

format:json,這是否會將我們從調用中返回的任何響應格式化爲JSON對象?

他只是重寫類方法format(請參閱HTTParty line #50)。

base_uri - 這是每次我們創建一個BaseWebService類的新實例時自動調用嗎?如果不是,它是如何觸發的? default_options - 我在HTTParty文檔中看到這個狀態返回屬性default_options的值,但我不確定這意味着什麼。也不是它在這堂課中用於什麼?

當你調用最HTTParty方法,它的外觀,看是否有base_uri設置,因爲你要覆蓋它在你的類,它會使用該值。

語法do_get = - > do?

do_get = ->是一個賦值,其中一個新的變量do_get被分配一個lambda->是拉姆達的簡稱。

在類方法get_data中,作者使用了以下(req_url,req_body,req_query),但是我無法在代碼庫中的任何位置找到這些變量或方法?你知道這些是如何使用的嗎?

這些變量在塊爲yielded時分配值。

+0

感謝x100爲了這個答覆Anthony。我很感激你打破這一切,特別是。現在它變得更有意義。今年我贏得聯邦杯的時候,你會在我的新聞發佈會上提到。 – adamscott