2016-07-04 76 views
1

即時通訊全新的Ruby和我剛完成編程的程序。如何構建/編譯我的紅寶石項目

該程序有大約350行代碼,6種方法但沒有類。它使用常量和全局變量。

這是慣例,例如,在一個單獨的文件中有全局變量/常量嗎?我應該把所有的方法分成不同的文件嗎?

什麼文件夾應該像我擁有所有文件的位置?

和最後,如何創建一個makefile(或Rake文件管它叫什麼。我有耙rubygem)

非常感謝你

+1

這遠不是一般性的問題,需要整本書才能涵蓋答案。請對你的問題非常具體。 https://www.ruby-lang.org/en/documentation/quickstart/可能有幫助 – jamesc

+0

好的答案http://stackoverflow.com/questions/3307209/what-is-the-modern-way-to-structure-a -ruby-gem –

+1

最好每個問題提出一個問題。 –

回答

1

對於一個初學者以下就足夠了。

├── Gemfile 
├── Gemfile.lock 
├── app.rb 
├── config.ru 
└── lib/ 
    ├── lib1.rb 
    ├── lib2.rb 

其中app.rb是你的主文件並運行使用

紅寶石app.rb

的lib/ 有你的庫文件lib1.rb lib2.rb項目和

假設你是通過你的應用程序啁啾然後lib1.rb可能是tweet.rb

+0

好的謝謝你,但我現在只有1個文件。這只是program.rb,我運行它在終端中使用'ruby program.rb'。我沒有任何配置或lib文件。我是否也需要創建一個rakefile,或者'ruby program.rb'是否足夠? –

+0

不,你不需要rakefile,除非你覺得你真的需要它。 – krazedkrish

0

我建議使用https://github.com/seattlerb/hoe

鋤專注於一個有用的形式在其位藏在心裏和 智能提取它所需要的。因此,您的版本中不存在額外的YAML文件,配置目錄,ruby文件或任何其他 工件。

我喜歡的是測試目錄是默認設置的,運行rake將運行測試。我需要我的lib/project_name.rb並填寫測試。

Hoe安裝程序包含一個Rakefile。 Rake由Hoe後面的同一組維護,Seattle.rb。信息:https://github.com/ruby/rake; docs:http://docs.seattlerb.org/rake/

Hoe允許您將項目變成寶石(如果適用於您的用例)。

鋤頭有一堆插件:

鋤頭有一個靈活的插件系統,讓您激活和關閉 什麼任務都可以在給定的項目。 Hoe已將 部分分解爲部分插件,以便於維護,但也可以使用 以更輕鬆地關閉或替換不需要的代碼。

Plus it's written by hardcore rubyists Ryan Davis (author of MiniTest) and Eric Hodel, so the code is bulletproof and the repo stays maintained.


結構概述

project_dir/ 
    History.txt 
    Manifest.txt 
    README.txt 
    Rakefile 
    bin/... 
    lib/... 
    test/... 

安裝&設置

通過命令行安裝:

gem install hoe 

設置一個項目:

sow project_name 

文檔

Hoe Documentation PDF

+1

很好的答案,非常翔實。非常感謝。但是,這一切仍然適用,如果我只有一個文件(program.rb),我在終端使用'ruby program.rb'運行?我還需要rakefile還是lib文件夾/文件? –

+0

這取決於。你想做什麼?如果這是任何專業的代碼,我會建議使用帶有_「rakefile或lib文件夾/文件」_的目錄結構。看看這個最小的回購,以瞭解如何使用Hoe來構建代碼:https://github.com/step1profit/chef_steps – SoAwesomeMan

0

「它使用常量和全局變量。」哦,不,請不要這樣做。你讓你的生活不必要地困難。

你真的需要避免使用全局常量和變量,除非你幾乎沒有別的選擇。他們很難保持秩序井然,並且在任何非平凡的計劃中都會造成混亂。

將程序中的所有內容組織成一個或多個moduleclass定義。給他們有意義的名字。您將使用module作爲「方法集合」容器,class用於封裝進程或某種實體的內容。

這種區別有時很難做出,但仔細思考問題並嘗試不同的方法將是必要的,以便正確執行。

我的Ruby代碼的基礎是一個叫做bin/用於任何類型的可執行文件,lib/的庫文件,test/測試代碼目錄和文件README來解釋這一切呢。後兩個特別重要,因爲未經測試的代碼不過是麻煩,而無證代碼更糟糕。

如果您有某種需要日常執行的進程,則只需要一個Rakefile。包裝一個gem就是這樣,或者像Rails一樣,管理數據庫遷移。大多數項目不需要其中的一個,但包含僅運行測試或生成文檔的項目有時很有幫助。

Rakefile的格式非常簡單,字面上有數以百萬計的例子。找到一個能夠滿足你需求並且適應你的特定結構的人。