2014-05-15 4 views
0

레일 매개 변수에 대해 사용자 매개 변수에 대한 테스트를 실행하는 테스트 자동화 응용 프로그램이 있습니다.ruby ​​파일 내에서 레일 환경을 변경 한 다음 다시 변경

루비 응용 프로그램의 테스트 실행은 다음과 같습니다 :이, 즉 development 잘 작동하지만, 현재의 환경에서 실행

config = RSpec.configuration 
json_formatter = RSpec::Core::Formatters::JsonFormatter.new(config.out) 
reporter = RSpec::Core::Reporter.new(json_formatter) 
config.instance_variable_set(:@reporter, reporter) 

RSpec::Core::Runner.run(["#{Rails.root}/spec/features/example_spec.rb"]) 

puts json_formatter.output_hash 

.

레일 환경을 변경하여이 코드가 test 환경에서 실행되도록 한 다음 다시 변경해야합니다.

누구든지이 작업을 수행하는 방법을 알고 있습니까?

RAILS_ENV=testing bundle exec rspec 

를 또는 무엇이든 당신이 실행해야합니다

감사 리처드

답변

0

당신은 항상 하나의 환경을 변경 (또는 세트) 수는 유닉스 같은 환경에서 다음과 같이 명령한다. 예를 들어, 스펙 실행 로직을 포함하는 커스텀 레이크 태스크를 정의하고 위에서 설명한대로 호출 할 수 있습니다.

이 개념을 사용하면 Ruby에서 직접 쉘 명령을 실행하고이 명령에만 사용자 정의 환경 변수를 설정할 수 있습니다. 이 셸 명령에서 임의의 Ruby 코드 (예 : ruby -e ...)를 실행하거나 원하는 환경에서 필요한 모든 것을 올바르게 초기화하는 다른 Ruby 파일을 호출 할 수 있습니다.

어떻게 든 가능하다해도 코드 내에서 현재 환경을 변경하려고하면 정말 좋지 않을 것이라고 생각합니다. 개인적으로 커맨드 라인에서 필요한 환경이 무엇이든간에 호출 할 수있는 커스텀 헌신적 인 레이크 작업을 개인적으로 고수 할 것입니다.