SORU
3 Aralık 2013, Salı


İ18n doğrulama raylar admin uyarı

Sadece raylar 4.0.2 için güncellendi ve bu uyarıyı alıyorum:

[onaylanmadı] İ18n.enforce_available_locales gelecekte true değerini alacak. Eğer gerçekten yerel doğrulama atlamak istiyorsanız İ18n ayarlayabilirsiniz.bu ileti önlemek için enforce_available_locales = false.

Yanlış ayarlamak, herhangi bir güvenlik sorunu var mı?

CEVAP
4 Aralık 2013, ÇARŞAMBA


Önemli: App İ18n 0.6.8, bug that prevents the configuration to be set correctly kullanarak olmadığından emin olun.


Kısa cevap

Sessizlik için Uyarı uygulama Düzenle.dosya rb ve Rails::Application vücut içindeki aşağıdaki satırı vardır

config.i18n.enforce_available_locales = true

Olası değerler şunlardır:

  • yanlış:
    • yerel doğrulama atlamak istiyor
    • yerel umurunda değil
  • doğru:
    • eğer geçersiz bir yerel geçirilir, bir hata yükseltmek için uygulama (veya)
    • yeni Raylar davranışları (veya) varsayılan
    • yerel doğrulama önemsiyorum

Not:

  • Eski varsayılan davranış false, true karşılık gelir.
  • Eğer config.i18n.default_locale yapılandırma veya diğer i18n ayarları yapmak, config.i18n.enforce_available_locales Bu ayar, sonra bunu yapmak için emin olun.
  • Eğer İ18n özellikler arasında üçüncü parti mücevher kullanmak, Uygulama ile değişken ayarı config nesne, bir etkisi olabilir. Bu durumda, doğrudan I18n I18n.config.enforce_available_localeskullanarak ayarlayın.

    Uyarılar

Örnek

require File.expand_path('../boot', __FILE__)

# ...

module YouApplication
  class Application < Rails::Application

    # ...

    config.i18n.enforce_available_locales = true
    # or if one of your gem compete for pre-loading, use
    I18n.config.enforce_available_locales = true

    # ...

  end
end

Uzun cevap

Admin uyarı şimdi Raylar 4 (>hem de görüntülenir = 4.0.2) ve Raylar 3.2 (>= 3.2.14). Nedeni this commit olarak açıklanmıştır.

Mevcut yerel Ayarları Uygula

I18n.config.enforce_available_locales büyütürüz doğru olduğunda Eğer geçirilen ayar mevcut ise İ18n::İnvalidLocale durum.

Varsayılan admin bir hata görüntüler 18* *olarak ayarlanmıştır.

Eğer tamamen mevcut yerel ayarlar (eski davranış uygulanması geçelim false ayarlayın.

Bu aşağıdaki yöntemler uygulanmıştır :

  • İ18n.config.= default_locale
  • İ18n.config.locale=
  • İ18n.tercüme
  • İ18n.yerini belirledik
  • İ18n.transliterate

Önce bu değişiklik, geçirilen bir desteklenmeyen yerel, Raylar olur sessizce geçiş eğer yerel geçerli (Yani eğer orada bir karşılık gelen yerel dosya /config/locales klasör), aksi takdirde yerel istiyorsunuz varsayılan config.i18n.default_locale yapılandırma (varsayılan :TR).

İ18n gem yeni sürümü, geliştiricilerin biraz yerel yönetim konusunda daha bilinçli olmaya zorlar.

Gelecekte, davranış değişikliği ve eğer bir yerel geçersiz, Raylar app bir hata oluşturacaktır.

Hazırlık bu değişikliği (Mayıs potansiyel aradan birkaç uygulama bu güne kadar güveniyordun sessiz varsayılan), uyarı zorlayarak, açıkça ilan doğrulama istiyor musun gerçekleştirmek, sırasında geçerli bir geçiş dönemi.

Önceki davranışını geri yüklemek için, sadece false aşağıdaki yapılandırma ayarlayın

config.i18n.enforce_available_locales = false

eğer etki alanı doğrulaması hakkında daha fazla katı ve geçersiz yerel durumda varsayılan geçiş önlemek istiyorsanız aksi takdirde, true olarak ayarlayın yeni Raylar maç varsayılan ya.

config.i18n.enforce_available_locales = true

Uyarı

  1. Eğer ayarı config.i18n.default_locale yapılandırma veya kullanmaya daha önce de belirttiğim yöntemleri (default_locale=, locale=, translate, vb), emin yapacağını sonra ayarı config.i18n.enforce_available_locales ayarı. Aksi takdirde, admin uyarı kadar haşhaş devam edecektir. (Teşekkürler Fábio Batista).

  2. Eğer İ18n özellikler arasında üçüncü parti taşlar kullanırsanız, değişken ayarı etkili olmayabilir. Aslında mesele bir önceki noktada, biraz açıklandığı gibi aynı biraz daha zor hata ayıklama için.

    Bu sorun, öncelik meselesi. Eğer Raylar app config ayarladığınızda, değeri hemen İ18n gem atanmadı. Raylar bir iç nesne, yükler bağımlılıklar (Railties ve üçüncü şahıs taşlar) her config mağazaları ve hedef sınıfları için yapılandırma geçirir. Eğer config İ18n, daha sonra atandığı önce İ18n yöntemlerden birini çağıran bir taş (veya Raylar eklenti) kullanırsanız uyarı alırsınız.

    Bu durumda, Raylar yığını atlamak ve hemen arayarak İ18n gem config ayarlamak gerekir

    I18n.config.enforce_available_locales = true
    

    yerine

    config.i18n.enforce_available_locales = true
    

    Sorunu kolay kanıtlamak. Yeni boş bir Rails uygulaması oluşturmak için deneyin ve o ayarı config.i18n application.rb eserlerinde iyi göreceksiniz.

    Eğer app varsa, suçlu hata ayıklamak için kolay bir yolu yoktur. Sistem i18n gem bulun i18n.rb dosyayı açın ve yöntemi enforce_available_locales! 36 ** deyimi içerecek şekilde düzenleyin.

    Bu yöntemi çağrılan her stacktrace baskı neden olur. Stacktrace (benim durumumda Authlogic) inceleyerek çağırıyor belirlemek mümkün olacak.

    ["/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/i18n-0.6.9/lib/i18n.rb:150:in `translate'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/i18n/translator.rb:8:in `translate'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/i18n.rb:79:in `translate'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/email.rb:68:in `validates_format_of_email_field_options'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/email.rb:102:in `block in included'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/email.rb:99:in `class_eval'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/email.rb:99:in `included'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/base.rb:37:in `include'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/base.rb:37:in `block in acts_as_authentic'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/base.rb:37:in `each'",
     "/Users/weppos/.rvm/gems/ruby-2.0.0-p247@application/gems/authlogic-3.1.0/lib/authlogic/acts_as_authentic/base.rb:37:in `acts_as_authentic'",
     "/Users/weppos/Projects/application/app/models/user.rb:8:in `<class:User>'",
     "/Users/weppos/Projects/application/app/models/user.rb:1:in `<top (required)>'",
    

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Apple

    Apple

    22 HAZİRAN 2005
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • UKF

    UKF

    2 Aralık 2009