내 레일이 테스트 환경이 아닌 개발 환경에 있는지 어떻게 확인할 수 있습니까?


78

Rails 앱이 개발 환경 (예 : $ rails 서버)에 있고 테스트 환경 (예 : $ rake 테스트)에있는 경우에만 실행해야하는 코드가 있습니다.

내가 시도 할 때

if Rails.env.development?
    dont run me during testing
end

내가 어떤 환경에 있든 상관없이 코드가 실행됩니다.

if Rails.env.development? and not Rails.env.test?
    NO, REALLY, DONT RUN ME DURING TESTING
end

그러나 사랑은 없습니다.

대신 무엇을해야합니까?


이 코드는 작동합니다. Rails.envRails가 사용하고 있다고 생각하는 환경을보기 위해 해당 블록 내부에서 출력 해 보셨습니까 ?
PinnyM 2013 년

1
&&!와 같지 않은 "and not"비트 일 수 있다고 생각합니다. 그건 제가 추측하는 것입니다 .. 해결책을 찾았습니까?
baash05 2014 년

나는 해결책을 찾지 못했습니다. 어떤 이유로 든 rails는 이니셜 라이저를 두 번 실행합니다 (아래 주석 참조). 난 그 이후로 난간을 버렸다.
spierepf 2014 년

답변:


146

올바르게 전화하신 것 같습니다. 아마도 문제는 환경이 어딘가에서 다르게 명명된다는 것입니다. 콘솔에서 시도하십시오.

> Rails.env
=> "development"
> Rails.env.development?
=> true
> Rails.env.test?
=> false

... 환경이 당신이 생각하는 것과 같은지 확인합니다.


1
좋아, 나는 단순히 'Rails.env'를 넣는 이니셜 라이저를 만들었다. 그 결과 $ rails 서버는 'development'를 제공하고 $ rake test는 'development'와 'test'를 모두 제공합니다. 이것은 레일이 $ rake 테스트 중에 내 이니셜 라이저를 두 번 실행하고 있음을 나타냅니다.
spierepf 2013 년

2
특정 환경에서 콘솔을 열 수도 있습니다 (예 : RAILS_ENV=test rails console.
Mori

1
앱에 pry를 설치하지 않았더라도 걱정하지 마십시오. 또한 간단한 콘솔에서 작동
ImranNaqvi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.