Tìm hiểu cách hoạt động reloading code của Lotus Framework
Ruby
114
lotusrb
11
White

My Mai viết ngày 13/08/2015

Như các bài trước mình đã từng viết thì khi khởi tạo xong 1 app thì việc run serverreload code được thực hiện qua lệnh này : lotus server

Lotus không tự thực hiện việc reloading code mà sử dụng một gem là Shotgun để giúp thực hiện việc này.

Sau đây mình sẽ phân tích về cách hoạt động của Shotgun và cách mà Lotus sử dụng
Shotgun như thế nào:

Cách hoạt động của Shotgun

Shotgun::Loader.new(@_env.rackup.to_s)
  • Shotgun sẽ thay rack nhận 1 request

  • Khi có 1 request gửi đến thì Shotgun::Loader#call sẽ được gọi

  • IO.pipe là resource code lúc này:

    • @reader sẽ là read_io —> thể hiện sự thay đổi của process
    • @writer sẽ là write_io —> lắng nghe thay đổi của process
  • Lần đầu nhận được request thì main process sẽ là parent process.

  • Những lần tiếp theo thì main process sẽ là child process. (n sẽ là parent process của n+1)

Cách mà Lotus sử dụng Shotgun

  • Default ta có code_reloading có gá trị là true

Khi đó nó sẽ thực thi đoạn code sau để yêu cầu shotgun thực hiện công việc reload của shotgun

if code_reloading?
     require 'shotgun'
     @app = Shotgun::Loader.new(@_env.rackup.to_s)
end

Minh hoạ

alt text

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

My Mai

33 bài viết.
177 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
21 8
Lotus là gì? (Link) là một Ruby Web Framework mới với chú trọng vào cấu trúc tách rời với thiết kế đơn giản và dễ hiểu. Hiện tại thì Lotus vừa re...
My Mai viết 3 năm trước
21 8
White
19 21
Bạn muốn load 3 image khác nhau (Ý mình ở đây là dùng tag không phải background nhé) cho 3 loại màn hình khác nhau (small, medium, large). Bạn sẽ l...
My Mai viết 3 năm trước
19 21
White
19 9
Tham gia cộng đồng Thoáng đó cũng đã 2 năm từ lúc tớ tham gia cộng đồng Ruby Việt Nam. Giờ ngồi ngẫm lại được gì và mất gì :v Thật thì chẳng mất...
My Mai viết gần 2 năm trước
19 9
Bài viết liên quan
White
8 6
Chưa xem phần 2? Xem (Link) Trong bài viết này tôi giới thiệu cho các bạn về khái niệm function arity, một cách gọi mĩ miều của số lượng argument ...
Lơi Rệ viết gần 3 năm trước
8 6
White
8 1
Tiếp theo (Link) Mình sẽ hướng dẫn cách test căn bản cho API mình tạo. Thật ra mà nói thì mình phải viết test trước khi làm nhưng mà để tránh việc...
My Mai viết 3 năm trước
8 1
White
4 2
__Chú thích__: Đây là bản dịch tiếng Việt của bài viết gốc của tôi. Nếu bạn muốn xem bản tiếng Anh, xin hãy trỏ tới URL (Link) Lời mở (Link) là ...
Lơi Rệ viết hơn 3 năm trước
4 2
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
33 bài viết.
177 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!