2014-05-12 56 views
-1

我試圖用語言學家寶石:https://github.com/github/linguist如何將Ruby對象從文件轉換爲JSON?

我的代碼是:

require 'linguist' 

filePath = ARGV 
langDetails = Linguist::FileBlob.new(filePath) 
puts langDetails 

輸出:#<Linguist::FileBlob:0x007faf93b17200>

然而,當我做puts langDetails.language,我得到

/Users/myuser/.rvm/gems/[email protected]/gems/github-linguist-2.10.15/lib/linguist/file_blob.rb:39:in `stat': can't convert Array into String (TypeError) 
    from /Users/myuser/.rvm/gems/[email protected]/gems/github-linguist-2.10.15/lib/linguist/file_blob.rb:39:in `mode' 
    from /Users/myuser/.rvm/gems/[email protected]/gems/github-linguist-2.10.15/lib/linguist/blob_helper.rb:294:in `language' 
    from ./linguist.rb:9:in `<main>' 

我不完全確定我做錯了什麼。理想情況下,我希望將數據作爲JSON對象。我該如何做到這一點?

回答

2

看看源代碼。 FileBlog說File.stat(@path).mode.to_s(8)@path是一個數組。 filePath需要是一個路徑字符串,但ARGV是一個數組。

也許你的意思是ARGV[0]

+0

太好了!感謝您的發現。但是現在我怎樣才能得到結果作爲一個JSON對象? – Shamoon

+1

您期望作爲JSON對象得到什麼結果?爲什麼?我從來沒有使用過語言學家,但在文檔中我沒有看到任何有關這方面的知識。它會告訴你你的文件使用什麼語言。這是一個字符串。你如何期待語言學家將你從「一個Ruby對象轉換爲JSON」是我的理解之外的。你得到一個錯誤,我解釋它。 – matt

+1

如果您想將Ruby對象轉換爲JSON,請使用'to_json'方法。但是,我不明白語言學家與它有什麼關係。 – matt