笔者以为rails工程 生成批量进行测试的shell脚本为例,与大家一起探讨一下。
为了能够更加快速的运行所有的测试脚本,笔者采用的方法是编写一个shell,里面写满了:
ruby test/functional/user.rb
...
之类的语句。
这样,每次运行测试的之后,只需要运行这个shell即可。
(应该还有更加简单的方法,只是没有发现,希望有知道的朋友,告知一二 : oushunbao@gmail.com. 后来发现了一个命令: rake test正好可以解决测试的问题。)
进而发现,如果有测试脚本增加,那么有将要在shell脚本中自行添加。于是乎,笔者就在想,如果可以自动生成这个脚本,岂不更好?接着,就写了下面的代码。
大致思路就是,遍历指定目录以及子目录下的所有 *.rb的文件,并且组合成 ruby ..../filename.rb的形式。然后输出。
# create runtest.rb for rails.
# e.g. :(the name of this file is createruntest.rb)
# #>ruby createruntest.rb ./test > runtest.sh
# #>chmod 777 runtest.sh
#
def getfiles(path)
re = []
allre = []
Dir.foreach(path) do |f|
allre << f
end
allre.each do |f|
fullfilename = path + "/" + f
if f == "." or f == ".."
elsif File.directory?(fullfilename)
resub = []
resub = getfiles(fullfilename)
if resub.length > 0
ref = {}
ref[f] = resub
re << ref
end
elsif File.exist?(fullfilename) and (f =~ /\.rb$/) # only rb file
re << f
end
end
return re
end
def print_arr(arr,root)
sre = ""
arr.each {|value|
if value.class == Hash
value.each do |k,v|
#re += "#{k} => { #{print_arr(v)} }"
sre += print_arr(v,root+"/"+k)
end
else
#re += value
sre += "ruby #{root}/#{value} \n"
end
#re += ","
}
return sre
end
root = ARGV[0] || Dir.pwd
arr = getfiles(root)
puts print_arr(arr,root)
将以上代码保存到文件中(假设文件名为create_runtest.rb),并且将文件放置在rails的根路径下。
然后运行
#> ruby create_runtest ./test > runtest.sh
在设置权限
#> chmod 777 runtest.sh
ok
下次使用的时候,直接在rails根路径下运行 ./runtest.sh 就好了
(centos5 + ruby 1.8.6 + rails 1.2.3)
本文的中对目录中文件的解读采用了递归的方式进行,这样思路应该会更加清晰一下。
分享到:
相关推荐
在Ruby编程语言中,遍历目录是常见的任务,特别是在处理文件系统操作时。本文将深入探讨两种简洁的遍历目录的方法,并提供相关的编程知识。 首先,我们来看一下在Ruby中自定义遍历目录的方法。在给出的`traverse.rb...
在Shell脚本中,`find`命令是遍历目录的强大工具,例如`find . -type f`将列出当前目录下所有文件,包括隐藏文件。 8. **C++**: C++没有内置的文件系统库,但可以使用Boost库的`boost::filesystem`,或者C++17及...
在Java中,可以使用`java.io.File`类的`listFiles()`方法和递归来遍历目录树: ```java import java.io.File; public void traverseDirectory(File dir) { File[] files = dir.listFiles(); if (files != ...
在IT行业中,脚本语言因其灵活性和高效性而被广泛使用,其中Ruby作为一种优雅且强大的脚本语言,常用于自动化任务、Web开发以及构建工具。本主题“基于Ruby的MKS rebase脚本 Ruby语言基础”关注的是如何利用Ruby语言...
在Ruby中,你可以自定义一个递归函数来遍历目录及其子目录中的所有文件。这种方法直观地模拟了树形结构的遍历过程,对于理解和操作文件系统非常有帮助。 ```ruby def traverse_dir(file_path, &block) if File....
总结来说,这个Ruby脚本提供了一种高效的方法来遍历指定目录及其子目录,对所有文件计算MD5哈希值,然后输出结果。这对于文件系统的备份验证、文件一致性检查等场景非常有用。通过调整和扩展此代码,可以实现更复杂...
4. 遍历目录:获取目录结构,列出文件和子目录。 5. 容错机制:如果某个节点失效,HDFS客户端应该能自动重定向到备份节点进行操作。 6. 安全性:支持Hadoop的安全特性,如Kerberos认证,确保数据传输的安全性。 ...
- **列出目录**: 使用 `Dir.entries` 或 `Dir.glob` 方法列出目录下的文件和子目录。 - **删除目录**: 使用 `Dir.delete` 方法删除目录及其内容。 以上内容涵盖了从Ruby的基础语法到高级特性的各个方面,对于初学...
CocoaPods还支持子目录集成,这意味着库的源代码可以被组织在项目的特定目录下,而不是直接添加到`Pods`目录。这对于保持项目结构的清晰有很大帮助。 总结来说,CocoaPods工具链使用脚本能够帮助开发者更有效地管理...
todo.rb 跑步: ruby todo.rbTodo.rb将循环遍历notes目录(包括子目录)中的所有markdown文件,以查找遵循空清单的语法的所有行。 然后,将它们全部(作为副本而不是嵌入) TODO.md到notes目录中名为TODO.md的文件中...
例如,使用Ruby-SysUtils,开发者可以编写一个脚本来遍历所有用户的环境变量,或者启动、停止系统服务,而无需深入学习操作系统底层的API。这种抽象层提高了开发效率,也增强了代码的可移植性。 虽然Ruby-SysUtils...
benchmarks下的子目录是较大的宏benchmarks 。 每个基准都包含一个在/lib/harness.rb找到的/lib/harness.rb 。 该线束控制基准测试的运行次数,并将计时值写入输出CSV文件。 run_benchmarks.rb脚本从YJIT存储库中...
在这个目录下,我们可能会找到以下文件和子目录: - `Gemfile`: 定义项目依赖的Ruby库,如Nokogiri和HTTParty。 - `Gemfile.lock`: 记录具体版本的库,确保在不同环境中的一致性。 - `lib/`: 存放项目的源代码,如...
这个脚本会将指定目录及其子目录下的所有TXT文件内容合并成一个名为'merged.txt'的新文件。 除了Python,其他编程语言如Java、C#、Ruby等也有类似的方法实现此功能。如果你对特定语言的实现有需求,可以根据相应的...
例如,编写一个Perl脚本来遍历指定目录下的所有文件,并打印出每个文件的信息。 ```perl #!/usr/bin/perl use strict; use warnings; opendir(my $dh, '.') or die "Cannot open directory: $!"; while (my $file ...
提供的代码示例展示了如何遍历指定目录下的所有文件和子目录,对于每个文件或目录,会根据名称格式进行解析并输出相关信息。这种代码通常用于自动化处理文件系统中的数据,例如在构建系统中自动识别和处理特定命名...
每个作业可能被组织成不同的子目录或文件,按照课程进度或者主题进行分类。通过浏览这些文件,我们可以了解到学员是如何解决各种编程问题的,包括如何定义方法、如何操作数组和哈希、如何使用类和模块、以及如何进行...
2. ** Challenges **目录:包含各个CodeEval挑战的子目录,每个子目录可能有一个或多个Ruby文件,用于实现特定的解决方案。 3. ** lib **目录:可能包含通用函数或模块,供挑战代码使用。 4. ** test **目录:包含...
- **项目二**:遍历本地文件系统,统计一个目录及其子目录下所有文件的大小,并按大小排序后输出结果。 - **项目三**:与数据库交互,利用Python连接SQLite数据库,实现对数据的增删查改操作。 2. **掌握一种高效...
1. **src**:存放源代码文件,每个子目录对应一个独立的package。 2. **pkg**:编译后的目标代码(.a文件)存放于此,供其他程序引用。 3. **bin**:编译完成后生成的可执行文件。 4. **doc**:项目的文档,如README...