de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 hbin
hbin
Question

membingungkan tentang autoload_paths vs eager_load_paths di rel 4

Saya membaca posting tentang rel load_paths, berikut adalah link.

Tapi, saya masih bingung tentang perbedaan antara autoload_paths dan eager_load_paths:

Saya telah menguji mereka dalam baru dibuat Rel 4 proyek. Tampaknya bahwa mereka menjalankan cara yang sama, bahwa auto-reload dalam pengembangan mode tapi dalam mode produksi.

46 2013-11-04T17:18:33+00:00 2
Yuki Inoue
Yuki Inoue
Pertanyaan edit 10 Maret 2018 в 11:45
Pemrograman
ruby-on-rails
Solution / Answer
Max Chernyak
Max Chernyak
8 November 2013 в 6:24
2013-11-08T06:24:39+00:00
Lebih
Sumber
Sunting
#22710779

Penulis dari artikel terkait di sini. Berikut ini's merupakan upaya untuk menjernihkan kebingungan, pergi dari @fkreusch's jawaban.

Di Ruby anda harus memerlukan setiap .rb file dalam rangka untuk memiliki kode dijalankan. Namun, perhatikan bagaimana dalam Rails anda tidak pernah secara khusus memerlukan dari model, controller, atau file lainnya di aplikasi / dir. Mengapa demikian? Yang's karena di Rel aplikasi /* adalah autoload_paths. Ini berarti bahwa ketika anda menjalankan aplikasi rails anda dalam pengembangan (misalnya melalui rel konsol) — tak satu pun dari model dan controller adalah benar-benar diperlukan oleh ruby belum. Rails menggunakan magis khusus fitur dari ruby untuk benar-benar menunggu sampai kode menyebutkan konstan, katakanlah Buku, dan hanya kemudian akan menjalankan memerlukan 'pesan' yang ditemukan di salah satu autoload_paths. Ini memberi anda lebih cepat konsol dan server startup dalam pembangunan, karena tidak ada yang akan diperlukan ketika anda mulai, hanya jika kode benar-benar membutuhkannya.

Sekarang, perilaku ini lebih baik untuk pembangunan daerah, tetapi apa yang tentang produksi? Bayangkan bahwa di produksi server anda melakukan hal yang sama jenis magis pembebanan konstan (autoloading). It's bukan akhir dari dunia benar-benar, anda mulai server anda dalam produksi, dan orang-orang mulai browsing halaman anda sedikit lebih lambat, karena beberapa file akan perlu untuk secara otomatis diambil. Ya, itu's lebih lambat bagi mereka awal beberapa permintaan, sementara server "menghangat hingga", tapi itu's tidak seburuk itu. Kecuali, yang's bukan akhir dari cerita.

Jika anda berjalan pada ruby 1.9.x (jika saya ingat dengan benar), maka otomatis membutuhkan file-file seperti itu tidak thread safe. Jadi jika anda menggunakan server seperti puma, anda akan mengalami masalah. Bahkan jika anda tidak't menggunakan multi-threaded server, anda masih mungkin lebih baik setelah anda mendapatkan aplikasi yang dibutuhkan "proaktif", pada startup. Ini berarti bahwa dalam produksi, anda ingin setiap model, setiap controller, dll semua sepenuhnya diperlukan saat anda memulai aplikasi anda, dan anda don't pikiran semakin lama waktu startup. Ini disebut eager loading. Semua ruby file mendapatkan bersemangat dimuat, mendapatkan itu? Tapi bagaimana anda bisa melakukan itu, jika anda rails app doesn't memiliki satu memerlukan pernyataan? Yang's di mana eager_load_paths datang. Apa pun yang anda menaruh di dalamnya, semua file di semua folder di bawah jalur-jalur tersebut akan diperlukan pada saat startup di produksi. Semoga ini bisa membersihkan itu.

It's penting untuk dicatat bahwa eager_load_paths tidak aktif dalam pembangunan lingkungan, sehingga apa pun yang anda menaruh di dalamnya tidak akan bersemangat dibutuhkan segera dalam pembangunan, hanya di produksi.

It's juga penting untuk dicatat bahwa hanya menempatkan sesuatu ke autoload_paths tidak akan membuatnya bersemangat dimuat dalam produksi. Sayangnya. Anda harus secara eksplisit memasukkannya ke dalam eager_load_paths juga.

Lain yang menarik kekhasan adalah bahwa dalam setiap rails app, semua direktori di bawah aplikasi/ secara otomatis di kedua autoload_paths dan eager_load_paths, yang berarti bahwa menambahkan sebuah direktori yang ada tidak memerlukan tindakan lebih lanjut.

Max Chernyak
Max Chernyak
Jawaban edit 2 Desember 2015 в 4:25
152
0
 fkreusch
fkreusch
4 November 2013 в 5:43
2013-11-04T17:43:58+00:00
Lebih
Sumber
Sunting
#22710778

Pada dasarnya, autoload_paths adalah jalan Rel yang akan digunakan untuk mencoba memuat kelas-kelas secara otomatis. E. g. ketika anda menelepon Buku, jika kelas itu isn't dimuat belum, itu akan pergi melalui autoload_paths dan mencarinya di jalur-jalur tersebut.

Dalam produksi, mungkin akan lebih baik untuk memuat orang-orang dimuka untuk menghindari autoload bersamaan masalah. Untuk itu, ia menyediakan eager_load_paths. Jalan dalam daftar itu akan diminta dimuka ketika aplikasi dimulai.

11
0
Related communities 1
Ruby Indonesia
Ruby Indonesia
1 769 pengguna
Ruby adalah bahasa pemrograman dinamis berbasis skrip yang berorientasi objek. Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa-bahasa pemrograman skrip yang ada di dunia.
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 2 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi