2010-06-23 46 views
5

Tôi là người dùng Ruby on Rails mới và có một câu hỏi. Tôi có một ý tưởng về những gì tôi muốn người dùng DB của tôi trông giống như nhưng đã tự hỏi có hay không tôi nên thêm một giá trị bổ sung cho nó. Về cơ bản, tôi cần một biến để báo hiệu cho tất cả người dùng rằng nó là an toàn để tiến hành một hành động nhất định. Biến này sẽ liên tục trên tất cả người dùng và sẽ hiển thị với tất cả người dùng, nhưng tôi cũng muốn máy chủ có thể thay đổi biến này. Khi lập trình bằng các ngôn ngữ khác, tôi sẽ sử dụng một biến toàn cục, vì vậy tôi muốn kiểm tra xem đó có phải là trường hợp ở đây hay không. Nếu vậy, đây có phải là cách tiếp cận tốt nhất để thực hiện nó: Site-Wide Global Variables in Ruby on Rails. Ngoài ra, làm thế nào tôi sẽ cập nhật các biến toàn cầu. Cảm ơn vì bất kì sự giúp đỡ!Ruby on Rails - Biến toàn cầu?

Trả lời

7

Biến toàn cầu không phù hợp với nhu cầu của bạn. Nó không lây lan trên tất cả các quy trình Ruby. Nếu máy chủ web của bạn sinh ra 5 quy trình ruby ​​để xử lý 5 yêu cầu cùng một lúc, biến được xác định trong quy trình đầu tiên sẽ không hiển thị với những người khác.

Có các giải pháp khác có sẵn. Bạn có thể sử dụng cơ sở dữ liệu và lưu trữ cờ/thông tin trên cơ sở dữ liệu. Nếu không, bạn có thể sử dụng một tệp và lưu trữ giá trị trong tệp. Giải pháp tốt nhất sẽ là nguồn dữ liệu được chia sẻ trong bộ nhớ, chẳng hạn như memcached hoặc Redis.

+1

memcache sẽ quá mức cần thiết nếu đây là biến duy nhất được lưu trữ –