2010-08-19 35 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任务。