我正在编写一个ruby脚本,以编程方式在我的一个Rails应用程序中运行单元测试.Rails应用程序的根目录下有以下文件:
.ruby-gemset 包含以下内容:
my_rails_app
.ruby-version 包含以下内容:
2.1.2
添加以使用特定版本的Ruby和为应用程序创建单独的gemset。
我的第一个脚本版本如下所示
APP_ROOT_DIR_PATH = "/home/jignesh/my_rails_app"
UNIT_TEST_FILE_PATH_PREFIX = "test/unit"
unit_tests_dir = Dir.new("#{APP_ROOT_DIR_PATH}/#{UNIT_TEST_FILE_PATH_PREFIX}")
Dir.chdir(APP_ROOT_DIR_PATH) do
puts "Present Working Directory: #{Dir.pwd}"
unit_test_files = unit_tests_dir.entries.select { |file_name| file_name.end_with?(".rb") }.sort
puts "Total Unit Test: #{unit_test_files.size}"
unit_test_files.each do |file_name|
unit_test_relative_file_path = "#{UNIT_TEST_FILE_PATH_PREFIX}/#{file_name}"
puts "Running unit test: #{unit_test_relative_file_path}"
unit_test_output = `ruby -Itest #{unit_test_relative_file_path}`
puts "===========> Output <=========="
puts unit_test_output
puts "==============================="
end
end
但是上面的脚本运行不正确,因为它要求执行 bundle install 并使用Ruby版本 ruby-1.9.3-p194 而不是指定的版本在 .ruby-version 文件中,即2.1.2。
在shell终端上更改目录手动会导致应用程序在 .ruby-gemset 和 .ruby-version 中使用已定义的gemset和ruby版本strong>文件并成功运行单元测试,但是以编程方式执行相同的操作并不起作用。任何人都可以帮我修复妨碍脚本运行的问题吗?
以下是我可用并使用 rvm list 命令列出的Ruby版本列表 rvm红宝石
=* ruby-1.9.3-p194 [ i686 ]
ruby-1.9.3-p448 [ i686 ]
ruby-1.9.3-p484 [ i686 ]
ruby-1.9.3-p545 [ i686 ]
ruby-1.9.3-rc1 [ i686 ]
ruby-2.1.0 [ i686 ]
ruby-2.1.1 [ i686 ]
ruby-2.1.2 [ i686 ]
# => - current
# =* - current && default
# * - default
答案 0 :(得分:0)
你正试图在这里解决一个非常普遍的问题。您可能会发现Guard(和Guard-Test)项目很有趣:它会监听文件系统更改并在应用目录中发生更改时自动运行测试。你甚至不需要自己启动脚本!这确实有助于建立一个早期和经常测试的好习惯。
关于你原来的问题:当你正确设置RVM时,一切都应该与Guard一起使用。