복붙노트

[RUBY-ON-RAILS] 왜 우리는 레일에 @@ 클래스 변수를 사용하지 않도록해야합니까?

RUBY-ON-RAILS

왜 우리는 레일에 @@ 클래스 변수를 사용하지 않도록해야합니까?

왜 우리는 레일에 @@ 클래스 변수를 사용하지 않도록해야합니까? 그와 보안 허점이있다. 나는 레일에 새로운 오전로 답변 해주세요. 나는 많은 인스턴스 변수 @variable_name을 사용하고 있습니다. 나는 @@ VARIABLE_NAME 한 번 시도했다.

나는 클래스 변수는 약 만, 클래스 변수가 객체 사이에 공유 할 것을 알고

하지만 정말 우리가 레일에 @@ 클래스 변수를 사용하지 말아야하는 이유를 알고 싶습니다?

해결법

  1. ==============================

    1.단순히 그들이 스레드 안전하지 않기 때문에. 많은 레일 = 수있는 서버는 멀티 스레드입니다. 당신의 주어진 시간에 응용 프로그램과 사용자 중 하나에 의한 요청의 여러 실행중인 인스턴스가있을 수 있습니다 수단 임의로 그 중 하나에 할당 할려고하고있다. 클래스 변수가 계속되는 요구에 다를 수있는 가능성이 있으므로 클래스 변수는 프로세스간에 공유되지 않습니다.

    단순히 그들이 스레드 안전하지 않기 때문에. 많은 레일 = 수있는 서버는 멀티 스레드입니다. 당신의 주어진 시간에 응용 프로그램과 사용자 중 하나에 의한 요청의 여러 실행중인 인스턴스가있을 수 있습니다 수단 임의로 그 중 하나에 할당 할려고하고있다. 클래스 변수가 계속되는 요구에 다를 수있는 가능성이 있으므로 클래스 변수는 프로세스간에 공유되지 않습니다.

    당신이 의도적으로 단일 스레드 서버에서 응용 프로그램을 실행하기 위해 관리하는 경우에도 앱이 클래스 변수를 잃고, 요청 사이에 다시 시작하지 않을 것이라는 보장은 없습니다.

    당신은 클래스 변수가 제공하는 것과 유사한 기능을 원하는 경우에, 나는 강하게 당신이 그런 Memcached가 나 레디 스 등의 키 - 값 저장을 조사하는 것이 좋습니다.

  2. from https://stackoverflow.com/questions/9396563/why-should-we-avoid-using-class-variables-in-rails by cc-by-sa and MIT license