我正在尝试使用Ruby脚本在测试环境中加载Rails。我尝试过搜索一些资料,并找到了以下建议:
require "../../config/environment"
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'test'
这似乎正确地加载了我的环境,但是我的开发数据库仍在使用中。我做错了什么吗?
这是我的database.yml文件...但我认为这不是问题所在。
development:
adapter: mysql
encoding: utf8
reconnect: false
database: BrianSite_development
pool: 5
username: root
password: dev
host: localhost
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: mysql
encoding: utf8
reconnect: false
database: BrianSite_test
pool: 5
username: root
password: dev
host: localhost
production:
adapter: mysql
encoding: utf8
reconnect: false
database: BrianSite_production
pool: 5
username: root
password: dev
host: localhost
我无法使用
ruby script/server -e test
因为我正在尝试在加载Rails后运行Ruby代码。更具体地说,我正在尝试运行一个.sql数据库脚本,加载Rails,然后运行自动化测试。一切似乎都很正常,但由于某种原因,Rails似乎是在开发环境而不是测试环境中加载。
这是我尝试运行的代码的缩短版本:
system "execute mysql script here"
require "../../config/environment"
ENV['RAILS_ENV'] = ARGV.first || ENV['RAILS_ENV'] || 'test'
describe Blog do
it "should be initialized successfully" do
blog = Blog.new
end
end
我不需要启动服务器,只需要加载我的Rails代码库(模型、控制器等),这样我就可以对我的代码运行测试。
感谢任何帮助。
更新:
我现在已经成功加载了我的Rails环境。现在我正在尝试在我的rake任务中运行我的测试文件。以下是我的代码:
require"spec"
require "spec/rake/spectask"
RAILS_ENV = 'test'
namespace :run_all_tests do
desc "Run all of your tests"
puts "Reseting test database..."
system "mysql --user=root --password=dev < C:\\Brian\\Work\\Personal\\BrianSite\\database\\BrianSite_test_CreateScript.sql"
puts "Filling database tables with test data..."
system "mysql --user=root --password=dev < C:\\Brian\\Work\\Personal\\BrianSite\\database\\Fill_Test_Tables.sql"
puts "Starting rails test environment..."
task :run => :environment do
puts "RAILS_ENV is #{RAILS_ENV}"
require "spec/models/blog_spec.rb"
end
end
我以为 require "spec/models/blog_spec.rb" 文件可以做到,但似乎并没有运行测试...
感谢您迄今为止的帮助。
ENV["RAILS_ENV"] = "test" require File.expand_path('../../config/environment', __FILE__)
。 - fl00r