即时通讯全新的Ruby和我刚完成编程的程序。如何构建/编译我的红宝石项目
该程序有大约350行代码,6种方法但没有类。它使用常量和全局变量。
这是惯例,例如,在一个单独的文件中有全局变量/常量吗?我应该把所有的方法分成不同的文件吗?
什么文件夹应该像我拥有所有文件的位置?
和最后,如何创建一个makefile(或Rake文件管它叫什么。我有耙rubygem)
非常感谢你
即时通讯全新的Ruby和我刚完成编程的程序。如何构建/编译我的红宝石项目
该程序有大约350行代码,6种方法但没有类。它使用常量和全局变量。
这是惯例,例如,在一个单独的文件中有全局变量/常量吗?我应该把所有的方法分成不同的文件吗?
什么文件夹应该像我拥有所有文件的位置?
和最后,如何创建一个makefile(或Rake文件管它叫什么。我有耙rubygem)
非常感谢你
对于一个初学者以下就足够了。
├── 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
好的谢谢你,但我现在只有1个文件。这只是program.rb,我运行它在终端中使用'ruby program.rb'。我没有任何配置或lib文件。我是否也需要创建一个rakefile,或者'ruby program.rb'是否足够? –
不,你不需要rakefile,除非你觉得你真的需要它。 – krazedkrish
我建议使用锄: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已将 部分分解为部分插件,以便于维护,但也可以使用 以更轻松地关闭或替换不需要的代码。
结构概述
project_dir/
History.txt
Manifest.txt
README.txt
Rakefile
bin/...
lib/...
test/...
安装&设置
通过命令行安装:
gem install hoe
设置一个项目:
sow project_name
文档
很好的答案,非常翔实。非常感谢。但是,这一切仍然适用,如果我只有一个文件(program.rb),我在终端使用'ruby program.rb'运行?我还需要rakefile还是lib文件夹/文件? –
这取决于。你想做什么?如果这是任何专业的代码,我会建议使用带有_“rakefile或lib文件夹/文件”_的目录结构。看看这个最小的回购,以了解如何使用Hoe来构建代码:https://github.com/step1profit/chef_steps – SoAwesomeMan
“它使用常量和全局变量。”哦,不,请不要这样做。你让你的生活不必要地困难。
你真的需要避免使用全局常量和变量,除非你几乎没有别的选择。他们很难保持秩序井然,并且在任何非平凡的计划中都会造成混乱。
将程序中的所有内容组织成一个或多个module
或class
定义。给他们有意义的名字。您将使用module
作为“方法集合”容器,class
用于封装进程或某种实体的内容。
这种区别有时很难做出,但仔细思考问题并尝试不同的方法将是必要的,以便正确执行。
我的Ruby代码的基础是一个叫做bin/
用于任何类型的可执行文件,lib/
的库文件,test/
测试代码目录和文件README
来解释这一切呢。后两个特别重要,因为未经测试的代码不过是麻烦,而无证代码更糟糕。
如果您有某种需要日常执行的进程,则只需要一个Rakefile
。包装一个gem
就是这样,或者像Rails一样,管理数据库迁移。大多数项目不需要其中的一个,但包含仅运行测试或生成文档的项目有时很有帮助。
Rakefile
的格式非常简单,字面上有数以百万计的例子。找到一个能够满足你需求并且适应你的特定结构的人。
这远不是一般性的问题,需要整本书才能涵盖答案。请对你的问题非常具体。 https://www.ruby-lang.org/en/documentation/quickstart/可能有帮助 – jamesc
好的答案http://stackoverflow.com/questions/3307209/what-is-the-modern-way-to-structure-a -ruby-gem –
最好每个问题提出一个问题。 –