2010-08-12 31 views
10

Tôi có một máy chủ sản xuất và một máy chủ dàn dựng, trong đó các tính năng mới được kiểm tra trước khi chuyển chúng sang sản xuất. Máy chủ dàn dựng vật lý khác với máy chủ sản xuất (các máy chủ khác nhau với các url khác nhau), nhưng nó bắt chước nó nhiều nhất có thể (tức là các gói giống nhau, cùng một loại đá quý, v.v.).Rails: phân biệt dàn dựng từ sản xuất

Rails.env = 'production' trên cả hai máy chủ.

Vấn đề của tôi là trong một số trường hợp, tôi cần có hành vi khác nhau trong dàn dựng hơn là trong quá trình sản xuất.

Ví dụ: tính năng mới có thể gửi email lớn đến người dùng trong quá trình sản xuất; nhưng trong khi tôi đang thử nghiệm, tôi muốn họ được gửi đến một tài khoản email 'thử nghiệm'.

Cách tốt nhất để phát hiện máy chủ tôi đang ở là gì?

Tôi muốn làm điều đó "càng vui vẻ" càng tốt.

Thanks a lot.

Trả lời

23

Thông thường, đây là lý do bạn sử dụng các môi trường khác nhau. Thực tế, môi trường dàn dựng thường rất gần với sản xuất, nhưng với những thứ như email thực bị tắt.

Bạn không bị giới hạn trong việc phát triển/thử nghiệm/sản xuất - bạn có thể chạy trong môi trường có tên bất kỳ điều gì bạn muốn. Chỉ cần tạo một tập tin cấu hình/môi trường/staging.rb, thiết lập các giá trị bạn muốn trong đó, và bắt đầu ứng dụng của bạn với RAILS_ENV = dàn dựng - đó là tất cả để có nó. Bằng cách đó bạn có thể mô phỏng môi trường sản xuất của bạn, nhưng tính năng twiddle hoặc tắt như mong muốn khi bạn không muốn chúng hoạt động trước khi bạn thực sự đi vào hoạt động.

+0

Cảm ơn. Tôi đã thay đổi môi trường (tương đối dễ dàng, thực sự) và bây giờ mọi thứ hoạt động như dự định. – kikito

-1

Tôi sợ câu trả lời này không hữu ích lắm.

Cách railsy là có môi trường chỉ khác nhau về cấu hình (máy chủ lưu trữ nội dung, cơ sở dữ liệu, v.v.) cho các môi trường khác nhau. Vì vậy, một cơ sở dữ liệu khác với người dùng có địa chỉ email giả hoặc thử nghiệm sẽ là cách dễ nhất để tìm hiểu về nó.

Nếu bạn thường nhân bản từ Sản xuất, tôi khuyên bạn nên cập nhật email của tất cả người dùng, hoặc thông qua script/dbconsole hoặc script/console hoặc chỉ đơn giản là công việc rake.

Và nếu bạn muốn giới hạn/kiểm soát các tính năng, thì tôi khuyên bạn nên thực hiện điều đó thông qua kiểm soát nguồn, tức là có các bản sửa đổi khác nhau được triển khai.

Các vấn đề liên quan