2012-02-22 16 views
20

Raylarda sınıf değişkenlerini @@ kullanmaktan neden kaçınamıyoruz? Bununla herhangi bir güvenlik boşlukları var mı? Lütfen raylarla yeni olduğum gibi cevap verin. ve ben @variable_name örnek değişkenini kullanıyorum. Bir kere @@variable_name denedim. BildiğimRaylarda sınıf değişkenlerini @@ kullanmaktan neden kaçınmalıyız?

tek sınıf değişkendir hakkında, Sınıf değişken nesne

Ama gerçekten biz raylar içinde @@ sınıf değişkenleri kullanarak kaçınmalıdır Neden bilmek istiyorum arasındaki paylaşılabilir mi?

+0

. Kullanmamak için bir sebep yok, sadece kendi örneğinize ait olmadığını ve zaman uyumsuz olarak değişebileceğini unutmayın. – Chloe

cevap

41

Basitçe onlar güvenli iş parçacığı çünkü. Birçok ray = yetenekli sunucular çok iş parçacıklı. Bu, uygulamanızın herhangi bir zamanda birden çok çalışan örneğinin olabileceği ve kullanıcılarınızdan birinin isteğinin herhangi birine isteğe bağlı olarak atanacağı anlamına gelir. Sınıf değişkenleri süreçler arasında paylaşılmaz, bu nedenle sınıf değişkeninizin sonraki bir istekte farklı olması ihtimali vardır. Eğer kasıtlı tek dişli sunucuda uygulamanızı çalıştırmak yönetmek bile

, uygulama sınıf değişkeni kaybederek istekleri arasında yeniden olmayacak garantisi yoktur. Eğer değişkenler sağladıklarının sınıf benzer işlevler istiyorsanız

, şiddetle böyle Memcached veya REDIS olarak anahtar-değer mağazalara bakmanızı öneririz. Java `static` değişkenler gibi geliyor

+0

Hiçbir şey süreçler arasında paylaşılmaz, sadece @ vars. Sanırım aynı sebepten dolayı da @vars kullanmamalıyız, değil mi? –

+7

@Victor Peki, '@ değişkenleri 'örnek değişkenlerdir ve bir istekte ** bir istek olduğu için bir denetleyicinin yeni bir örneğini oluşturduğundan tutarlı olurlar. Sadece onları bir sonraki istekte bulmayı beklemeyin. – edgerunner

+0

Downvoter nedenini açıklayacak mı? – edgerunner

İlgili konular