2016-07-04 99 views
1

即时通讯全新的Ruby和我刚完成编程的程序。如何构建/编译我的红宝石项目

该程序有大约350行代码,6种方法但没有类。它使用常量和全局变量。

这是惯例,例如,在一个单独的文件中有全局变量/常量吗?我应该把所有的方法分成不同的文件吗?

什么文件夹应该像我拥有所有文件的位置?

和最后,如何创建一个makefile(或Rake文件管它叫什么。我有耙rubygem)

非常感谢你

+1

这远不是一般性的问题,需要整本书才能涵盖答案。请对你的问题非常具体。 https://www.ruby-lang.org/en/documentation/quickstart/可能有帮助 – jamesc

+0

好的答案http://stackoverflow.com/questions/3307209/what-is-the-modern-way-to-structure-a -ruby-gem –

+1

最好每个问题提出一个问题。 –

回答

1

对于一个初学者以下就足够了。

├── 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

+0

好的谢谢你,但我现在只有1个文件。这只是program.rb,我运行它在终端中使用'ruby program.rb'。我没有任何配置或lib文件。我是否也需要创建一个rakefile,或者'ruby program.rb'是否足够? –

+0

不,你不需要rakefile,除非你觉得你真的需要它。 – krazedkrish

0

我建议使用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已将 部分分解为部分插件,以便于维护,但也可以使用 以更轻松地关闭或替换不需要的代码。

Plus it's written by hardcore rubyists Ryan Davis (author of MiniTest) and Eric Hodel, so the code is bulletproof and the repo stays maintained.


结构概述

project_dir/ 
    History.txt 
    Manifest.txt 
    README.txt 
    Rakefile 
    bin/... 
    lib/... 
    test/... 

安装&设置

通过命令行安装:

gem install hoe 

设置一个项目:

sow project_name 

文档

Hoe Documentation PDF

+1

很好的答案,非常翔实。非常感谢。但是,这一切仍然适用,如果我只有一个文件(program.rb),我在终端使用'ruby program.rb'运行?我还需要rakefile还是lib文件夹/文件? –

+0

这取决于。你想做什么?如果这是任何专业的代码,我会建议使用带有_“rakefile或lib文件夹/文件”_的目录结构。看看这个最小的回购,以了解如何使用Hoe来构建代码:https://github.com/step1profit/chef_steps – SoAwesomeMan

0

“它使用常量和全局变量。”哦,不,请不要这样做。你让你的生活不必要地困难。

你真的需要避免使用全局常量和变量,除非你几乎没有别的选择。他们很难保持秩序井然,并且在任何非平凡的计划中都会造成混乱。

将程序中的所有内容组织成一个或多个moduleclass定义。给他们有意义的名字。您将使用module作为“方法集合”容器,class用于封装进程或某种实体的内容。

这种区别有时很难做出,但仔细思考问题并尝试不同的方法将是必要的,以便正确执行。

我的Ruby代码的基础是一个叫做bin/用于任何类型的可执行文件,lib/的库文件,test/测试代码目录和文件README来解释这一切呢。后两个特别重要,因为未经测试的代码不过是麻烦,而无证代码更糟糕。

如果您有某种需要日常执行的进程,则只需要一个Rakefile。包装一个gem就是这样,或者像Rails一样,管理数据库迁移。大多数项目不需要其中的一个,但包含仅运行测试或生成文档的项目有时很有帮助。

Rakefile的格式非常简单,字面上有数以百万计的例子。找到一个能够满足你需求并且适应你的特定结构的人。