2011-10-03 14 views
6

Raylar başladığında, çok yavaş başlatma süresiyle sonuçlanan tüm bağımlılıklarını (taşlar) önceden yükler. Üzerinde çalıştığım orta ölçekli bir projede, rayların başlangıç ​​zamanı makineye göre 10-15 saniyedir. Bu üretimde bir sorun olmasa daNeden Raylar, önyükleme süresi boyunca tüm bağımlılıklarını (taşlar) önceden yükler?

, bu gelişmede büyük bir acıdır. Özellikle TDD/BDD çalışırken. Testleri hızlandırmak için çözümler var (örneğin, spork gibi), ancak kendi başlarına sorunları çözüyorlar.

Sorum şu: neden yerine başlangıç ​​döneminde her şeyi önceden yüklenmesi, kod dosyaların her biri gerekli bağımlılıkları gerektirmez?

Manüel ihtiyaçların olumsuzlukları nelerdir? Ekstra kod satırı?

+0

http://stackoverflow.com/questions/3418895/how-to-reload-all-gems-in-rails-3 – jimworm

+0

TDD stilinde çalışırken otomatik ya da benzer bir araç kullanmayı düşünün. – taro

+0

@taro Guard-rspec kullanıyorum (autottest ile aynı şeyi yapıyor), ama bu başlangıç ​​saati ile yardımcı olmaz. – arikfr

cevap

3

Raylar PHP değildir. Bazı kaynaklar otomatik olarak yüklenir, ancak gereksinim duyacağınız tüm dosyalar önyükleme/başlatma işlemine yüklenir çünkü istekleri gerçekleştirilmeden önce uygulamanın yapılması daha iyidir, böylece uygulama yavaş yavaş istek üzerine yüklenir, yavaşlar. ilk istek. , Sınıfların bu son dakika on-the-fly yöntemlerinin tanımı ve yükleme Bir çok hala sadece 10-15 saniye için yükleme süresini aşağı kesim olur, ama eğer o yük zaman kapalı 5-10 saniye kesti Sadece ilk istek üzerine bağlanırdı. İyi değil, değil mi?

karşılaşabileceğiniz yük Çok zaman projenize eklemek mücevherler/eklentileri/kütüphanelerde bulunmaktadır. Önemli boyutların çoğu, yalnızca ihtiyacınız olan bölümleri yükleme yollarını sunar ve bu optimizasyonu daha fazla kullanabilirsiniz. geri yüklerken kesmek için application.rb yılında ...

require "action_controller/railtie" 
require "action_mailer/railtie" 
require "active_resource/railtie" 
require "rails/test_unit/railtie" 

(ve kaçının: ile ...

require 'rails/all' 

: Active Record ihtiyacı olmayan bir Raylar proje varsa Örneğin, siz değiştirebilirsiniz veritabanı ile ilgili olmayan hatalar.

+0

Bu mantıklıdır, ancak sorun yalnızca üretim/ilk talepte ise, sorunu çözmek için başka yollar vardır. Neden kalkınmaya ceza uygulanır? – arikfr

+0

Gelişimi ve üretimi bir arada tutmak için, varsayalım. Raylar, pek çok sınıfı önbelleğe almamak ve her isteği sizin için yeniden yükleyerek geliştirmedeki sorunu gidermeye yardımcı olur, böylece sunucuyu sık sık durdurmaya ve başlatmaya gerek yoktur. Bunun nasıl gerçekleştirileceğine dair başka tavsiyeleriniz varsa, bunları duymayı çok isterim ve eminim ki Rails takımı geliştirmelerle bir yama görmek ister. – coreyward

+0

Bu bir ceza değil. Bu iş yapmanın maliyeti - geliştirme sunucunuz için ilk sayfa yükündeki gecikmeyi hala alabilirsiniz. Bu sadece komut satırınızda gecikme olup olmadığına veya tarayıcınızda gecikme olup olmamasına bağlıdır. – Kelly

İlgili konular