即時通訊全新的Ruby和我剛完成編程的程序。如何構建/編譯我的紅寶石項目
該程序有大約350行代碼,6種方法但沒有類。它使用常量和全局變量。
這是慣例,例如,在一個單獨的文件中有全局變量/常量嗎?我應該把所有的方法分成不同的文件嗎?
什麼文件夾應該像我擁有所有文件的位置?
和最後,如何創建一個makefile(或Rake文件管它叫什麼。我有耙rubygem)
非常感謝你
即時通訊全新的Ruby和我剛完成編程的程序。如何構建/編譯我的紅寶石項目
該程序有大約350行代碼,6種方法但沒有類。它使用常量和全局變量。
這是慣例,例如,在一個單獨的文件中有全局變量/常量嗎?我應該把所有的方法分成不同的文件嗎?
什麼文件夾應該像我擁有所有文件的位置?
和最後,如何創建一個makefile(或Rake文件管它叫什麼。我有耙rubygem)
非常感謝你
對於一個初學者以下就足夠了。
├── 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
好的謝謝你,但我現在只有1個文件。這只是program.rb,我運行它在終端中使用'ruby program.rb'。我沒有任何配置或lib文件。我是否也需要創建一個rakefile,或者'ruby program.rb'是否足夠? –
不,你不需要rakefile,除非你覺得你真的需要它。 – krazedkrish
我建議使用鋤: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已將 部分分解爲部分插件,以便於維護,但也可以使用 以更輕鬆地關閉或替換不需要的代碼。
結構概述
project_dir/
History.txt
Manifest.txt
README.txt
Rakefile
bin/...
lib/...
test/...
安裝&設置
通過命令行安裝:
gem install hoe
設置一個項目:
sow project_name
文檔
很好的答案,非常翔實。非常感謝。但是,這一切仍然適用,如果我只有一個文件(program.rb),我在終端使用'ruby program.rb'運行?我還需要rakefile還是lib文件夾/文件? –
這取決於。你想做什麼?如果這是任何專業的代碼,我會建議使用帶有_「rakefile或lib文件夾/文件」_的目錄結構。看看這個最小的回購,以瞭解如何使用Hoe來構建代碼:https://github.com/step1profit/chef_steps – SoAwesomeMan
「它使用常量和全局變量。」哦,不,請不要這樣做。你讓你的生活不必要地困難。
你真的需要避免使用全局常量和變量,除非你幾乎沒有別的選擇。他們很難保持秩序井然,並且在任何非平凡的計劃中都會造成混亂。
將程序中的所有內容組織成一個或多個module
或class
定義。給他們有意義的名字。您將使用module
作爲「方法集合」容器,class
用於封裝進程或某種實體的內容。
這種區別有時很難做出,但仔細思考問題並嘗試不同的方法將是必要的,以便正確執行。
我的Ruby代碼的基礎是一個叫做bin/
用於任何類型的可執行文件,lib/
的庫文件,test/
測試代碼目錄和文件README
來解釋這一切呢。後兩個特別重要,因爲未經測試的代碼不過是麻煩,而無證代碼更糟糕。
如果您有某種需要日常執行的進程,則只需要一個Rakefile
。包裝一個gem
就是這樣,或者像Rails一樣,管理數據庫遷移。大多數項目不需要其中的一個,但包含僅運行測試或生成文檔的項目有時很有幫助。
Rakefile
的格式非常簡單,字面上有數以百萬計的例子。找到一個能夠滿足你需求並且適應你的特定結構的人。
這遠不是一般性的問題,需要整本書才能涵蓋答案。請對你的問題非常具體。 https://www.ruby-lang.org/en/documentation/quickstart/可能有幫助 – jamesc
好的答案http://stackoverflow.com/questions/3307209/what-is-the-modern-way-to-structure-a -ruby-gem –
最好每個問題提出一個問題。 –