2010-08-19 58 views
2

我想要爲我創建自動化事物的腳本。使用Rake或Gem構建腳本?

這裏是我想要做的一個例子:

  • 創建新的Rails應用(導軌新應用程序名稱--database = MySQL的)
  • 跳轉到文件夾
  • 初始化的git(git的初始化; git的補充。git的承諾-m 「第一承諾」;遠程Git添加名稱地址;混帳推名碩士)
  • 創建Heroku的項目(Heroku的創建;混帳推Heroku的主人)
  • 等等...

我有很多這樣的腳本(不只是軌道相關)我想要構建。

這些步驟應該用Rake還是Gem編碼?

從我所瞭解的耙子通常是從當前文件夾的Rakefile獲取任務。如果我想使操作普遍化,創建一個寶石是否更好?

的事情是,我希望能夠從調用它的任何目錄我在。

哪些優點和缺點每個?

+0

你在使用什麼操作系統? – Brian 2010-08-19 19:07:20

+0

Ubuntu服務器10.4。爲什麼? – 2010-08-19 19:17:00

+0

因爲我的答案不是很多窗戶:-) – Brian 2010-08-19 19:21:02

回答

2

用耙子或寶石去很好。如果您希望集中rake任務(假設你是在OSX或一些Linux/* nix中的變體),你可以在你的主目錄中創建它們:

~/.rake/*.rake 

耙將在那裏尋找任務的目錄,如果運行沒有Rakefile。另外,考慮一下(如果你是某種* nix平臺的話),只需爲你的命令創建shell別名即可。

編輯:

另一個要考慮具體到你的Rails的工作是利用應用程序模板。這是一個好的screencast的鏈接。

+0

雖然這是完全合理的,但我之前沒有嘗試過。一個放置中央耙架任務的好地方。 – 2010-08-19 20:39:59

1

你應該使用rake任務來處理這個東西。貝茨有一個screencast顯示如何完成你想要完成的事情。基本上你創建一個自定義的任務,你可以調用rake my_task之後,它會執行你的腳本。

2

你想要的一些東西可以用shell別名完成,一些用gems,一些用rake。

使用Brian的建議,我添加了以下到〜/ .rake/git.rake:

namespace :git do 
    desc "Init, add, initial commit" 
    task :init do 
    `git init .` 
    `git add .` 
    `git commit -m 'Initial commit'` 
    end 
end 

然後在任意目錄,我可以運行「耙混帳:初始化」,它會做所有的INTIAL設置。遠程添加有點困難,因爲遠程名稱將是一個變量(可以通過shell變量或Readline提示符提供)。

對於創建一個rails應用程序,我會添加一個別名〜/。bash_profile:

alias new_mysql="rails new $ARGV --database=mysql" 

然後運行「new_mysql myRailsProject」。

大多數情況下,我認爲只是運行一堆命令行腳本將是shell別名而不是Rake任務。