加载中...

习题 46: 一个专案骨架


这里你将学会如何建立一个专案“骨架”目录。这个骨架目录具备让专案跑起来的所有基本内容。它里边会包含你的专案档案布局、自动化测试程式码,模组,以及安装脚本。当你建立一个新专案的时候,只要把这个目录复制过去,改改目录的名字,再编辑里面的档案就行了。

骨架内容: Linux/OSX

首先使用下述命令创建你的骨架目录:

$ mkdir -p projects
$ cd projects/
$ mkdir skeleton
$ cd skeleton
$ mkdir bin lib lib/NAME test

我使用了一个叫 projects 的目录,用来存放我自己的各个专案。然后我在里边建立了一个叫做 skeleton 的档案夹,这就是我们新专案的基础目录。其中叫做 NAME 的档案夹是你的专案的主档案夹,你可以将它任意取名。

接下来我们要配置一些初始档案:

$ touch lib/NAME.rb
$ touch lib/NAME/version.rb

然后我们可以建立一个 NAME.gemspec 的档案在我们的专案的根目录,这个档案在安装专案的时候我们会用到它:

# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "NAME/version"

Gem::Specification.new do |s|
  s.name        = "NAME"
  s.version     = NAME::VERSION
  s.authors     = ["Rob Sobers"]
  s.email       = ["rsobers@gmail.com"]
  s.homepage    = ""
  s.summary     = %q{TODO: Write a gem summary}
  s.description = %q{TODO: Write a gem description}

  s.rubyforge_project = "NAME"

  s.files         = `git ls-files`.split("\n")
  s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
  s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
  s.require_paths = ["lib"]
end

编辑这个档案,把自己的联络方式写进去,然后放到那里就行了。

最后你需要一个简单的测试专用(我们将会在下一节中提到 Test )的骨架档案叫 test/test_NAME.rb:

require 'test/unit'

class MyUnitTests < Test::Unit::TestCase

  def setup
    puts "setup!"
  end

  def teardown
    puts "teardown!"
  end

  def test_basic
    puts "I RAN!"
  end

end

安装 Gems

Gems 是 Ruby 的套件系统,所以你需要知道怎么安装它和使用它。不过问题就来了。我的本意是让这本书越清晰越干净越好,不过安装软件的方法是在是太多了,如果我要一步一步写下来,那10 页都写不完,而且告诉你吧,我本来就是个懒人。

所以我不会提供详细的安装步骤了,我只会告诉你需要安装哪些东西,然后让你自己搞定。这对你也有好处,因为你将打开一个全新的世界,里边充满了其他人发布的软件。

接下来你需要安装下面的软件套件:

  • git - http://git-scm.com/
  • rake - http://rake.rubyforge.org/
  • rvm - https://rvm.beginrescueend.com/
  • rubygems - http://rubygems.org/pages/download
  • bundler - http://gembundler.com/

不要只是手动下载并且安装这些软件套件,你应该看一下别人的建议,尤其看看针对你的操作系统别人是怎样建议你安装和使用的。同样的软件套件在不一样的操作系统上面的安装方式是不一样的,不一样版本的 Linux 和 OSX 会有不同,而 Windows 更是不同。

我要预先警告你,这个过程会是相当无趣。在业内我们将这种事情叫做“yak shaving(剃犛牛)”。它指的是在你做一件有意义的事情之前的一些准备工作,而这些准备工作又是及其无聊冗繁的。你要做一个很酷的 Ruby 专案,但是创建骨架目录需要你安装一些软件到件,而安装软件套件之前你还要安装package installer (软件套件安装工具),而要安装这个工具你还得先学会如何在你的操作系统下安装软件,真是烦不胜烦呀。

无论如何,还是克服困难吧。你就把它当做进入程式俱乐部的一个考验。每个程式设计师都会经历这条道路,在每一段“酷”的背后总会有一段“烦”的。

使用这个骨架

剃犛牛的事情已经做的差不多了,以后每次你要新建一个专案时,只要做下面的事情就可以了:

  1. 拷贝这份骨架目录,把名字改成你新专案的名字。
  2. 再将 NAME模组和 NAME.rb 更名为你需要的名字,它可以是你专案的名字,当然别的名字也行。
  3. 编辑你的 NAME.gemspec 档案,让它包含你新专案的相关资讯。
  4. 重命名 test/test_NAME.rb,让它的名字匹配到你模组的名字。
  5. 开始写程式吧。

小测验

这节练习没有加分习题,不过需要你做一个小测验:

  1. 找文件阅读,学会使用你前面安装了的软件套件。
  2. 阅读关于NAME.gemspec 的文件,看它里边可以做多少配置。
  3. 建立一个专案,在 NAME.rb 里写一些程式码。
  4. 在 bin 目录下放一个可以运行的脚本,找材料学习一下怎样建立可以在系统下运行的 Ruby 脚本。
  5. 确定你建立的 bin 教本,有在 NAME.gemspec 中被参照到,这这样你安装时就可以连它安装进去。
  6. 使用你的 NAME.gemspec 和 gem buildgem install 来安装你写的程式和确定它能用。然后使用gem uninstall 去移除它。
  7. 弄懂如何使用 Bundler 来自动建立一个骨架目录。

还没有评论.