我如何构建/编译我的ruby项目

时间:2016-07-04 04:54:12

标签: ruby directory-structure rakefile

我是Ruby的新手,我刚刚编写完程序。

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

例如,在单独的文件中是否具有全局变量/常量?我应该将所有方法拆分成不同的文件吗?

我拥有所有文件的文件夹应该是什么样的?

最后,我如何创建一个makefile(或rakefile,无论它叫什么。我有rake ruby​​gem)

非常感谢

3 个答案:

答案 0 :(得分:1)

对于初学者来说,以下就足够了。

lon_rs=(reshape(l2aRS.clon_RS,3560*2000,1));
lat_rs=(reshape(l2aRS.clat_RS,3560*2000,1));
RSsig0=(reshape(l2aRS.sig0_RS,3560*2000,1));
RS_s0=zeros(720,360);
QS_s0=zeros(720,360);
I=ceil(2*(lon_rs));
J=ceil(2*(lat_rs+90));
K=ceil(2*(l1cQS.clon_QS));
L=ceil(2*(l1cQS.clat_QS+90));

for ind1=1:720;

    ind1

    for ind2=1:360;

        indsRS=find((I==ind1) &(J==ind2) &(RSsig0~=0));
        len_temp1=length(indsRS);

        if (len_temp1>0);
            len_RS(ind1,ind2)=len_temp1;           
            RS_s0(ind1,ind2)=median(RSsig0(indsRS));
        end;

        indsQS=find((K==ind1) &(L==ind2) &(l1cQS.sig_QS~=0));
        len_temp2=length(indsQS);

        if (len_temp2>0);
            len_QS(ind1,ind2)=len_temp2;
            QS_s0(ind1,ind2)=median(l1cQS.sig_QS(indsQS));
        end;

    end;

end;

其中app.rb是您的主文件,您使用

运行项目

ruby​​ app.rb

LIB / 你有库文件lib1.rb和lib2.rb

假设您通过您的应用发推文,那么lib1.rb可能是tweet.rb

答案 1 :(得分:0)

我建议使用 Hoe https://github.com/seattlerb/hoe

  

Hoe专注于以一种有用的形式保持一切   智能地提取它需要的东西。结果,没有   额外的YAML文件,配置目录,ruby文件或任何其他   您的版本中的文物,您将不会拥有。

我喜欢的是默认设置测试目录,运行SELECT DISTINCT b.[Entry No_] , a.[Starting Date], b.[Posting Date], b.[Item No_], b.[Invoiced Quantity], a.[Litre Conversion Factor], a.[Unit Rate] , b.[Location Code], a.[Excise Location], a.[Excise Type Code], a.[Unit Of Measure Code] FROM [Spier Live$Value Entry] b LEFT JOIN [Transfer Excise Tbl] a ON a.[No_] = b.[Item No_] AND b.[Location Code] = a.[Location Code] AND DateDiff(y,b.[Posting Date],a.[Starting Date]) > -365 --DateDiff Year -365 for starting date AND DateDiff(y,b.[Posting Date],a.[Starting Date]) < 0 --DateDiff Yer < 0 for posting date WHERE b.[Posting Date] > '2013-02-26' --This is when the unit rate was entered AND b.[Gen_ Bus_ Posting Group] IN ('LOCA','EXSA') AND b.[Invoiced Quantity] <>0 --Removing all zero values AND b.[Item No_] = 'F00335' ORDER BY b.[Posting Date] 将运行测试。我需要我的rake并填写测试。

Hoe设置包括Rakefile。 Rake由Hoe,Seattle.rb背后的同一组维护。信息:https://github.com/ruby/rake; docs:http://docs.seattlerb.org/rake/

如果适用于您的用例,Hoe允许您将项目转换为Gem。

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.

结构概述

lib/project_name.rb

安装&amp;设置

通过命令行安装:

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

设置项目:

gem install hoe

<强>文档

Hoe Documentation PDF

答案 2 :(得分:0)

“它使用常量和全局变量。”哦,不,拜托,不要这样做。你的生活变得毫无困难。

除非你没有其他选择,否则你真的需要避免使用全局常量和变量。他们很难保持秩序,并且在任何非平凡的计划中都会导致混乱。

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

这种区别有时难以实现,但仔细考虑问题并尝试不同的方法是必要的。

我的Ruby代码的基础是一个名为bin/的目录,适用于任何类型的可执行文件,lib/用于库文件,test/用于测试代码,README用于测试代码文件来解释它的全部功能。最后两个特别重要,因为未经测试的代码只是麻烦,而未记录的代码甚至更糟。

如果您需要在日常工作中执行某种流程,则只需要Rakefile。打包gem就是这样,或者与Rails一样,管理数据库迁移。大多数项目不需要其中之一,但有时候只包含一个只运行测试或生成文档的项目。

Rakefile的格式非常简单,其中有数百万个例子。找到一个能满足你需要的东西,并根据你的特定结构进行调整。