使用Rake或Gem构建脚本?

时间:2010-08-19 18:48:25

标签: ruby rake gem

我想构建为我自动化的脚本。

以下是我想要做的一个例子:

  • 创建新的rails应用程序(rails new application_name --database = mysql)
  • 跳转到文件夹
  • 初始化git(git init; git add .; git commit -m“first commit”; git remote add name address; git push name master)
  • 创建heroku项目(heroku create; git push heroku master)
  • 等等...

我想要构建很多这样的脚本(不仅仅是与rails相关)。

这些步骤应该用Rake还是Gem编码?

据我所知,rake通常从当前文件夹的Rakefile中获取任务。如果我想让操作具有通用性,那么创建一个gem会更好吗?

问题是我希望能够从我所在的目录中调用它。

每种方法的优缺点是什么?

3 个答案:

答案 0 :(得分:2)

使用耙子或宝石可以。如果你想集中你的rake任务(假设你使用OSX或某些Linux / * nix变体),你可以在你的主目录中创建它们:

~/.rake/*.rake

如果在没有Rakefile的目录中,Rake会查找要运行的任务。

另外,考虑(再次,如果您使用某种* nix平台)只需为命令创建shell别名。

修改

特定于Rails工作的另一个考虑因素是利用应用程序模板。这是指向好screencast的链接。

答案 1 :(得分:2)

你想要的一些东西可以通过shell别名完成,有些带有宝石,有些带有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

然后在任何目录中我都可以运行“rake git:init”,它将执行所有初始设置。远程添加有点困难,因为远程名称是变量(可以通过shell变量或Readline提示提供)。

要创建rails应用程序,我会为〜/ .bash_profile添加一个别名:

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

然后运行“new_mysql myRailsProject”。

在大多数情况下,我认为只运行一堆命令行脚本将是一个shell别名而不是Rake任务。

答案 2 :(得分:1)

你应该为这些东西使用rake任务。贝茨有一个screencast,展示了如何完成你想要完成的任务。基本上你创建一个自定义任务,然后你可以调用rake my_task并执行你的脚本。