2009-08-27 31 views
6

Đối với một dự án gần đây, tôi đã có một vài ý kiến ​​với mã như thế này:Tại sao Array.count có sẵn trong chế độ dev chứ không phải sản xuất?

<% if @users.count == 0 %> 

này đã làm việc một cách hoàn hảo trong chế độ phát triển ... Tôi cuộn nó ra sang chế độ prod và nó phát nổ, nói đếm mà không phải là một phương pháp hợp lệ của mảng. Tôi đã thay đổi mọi trường hợp để sử dụng độ dài # Array thay thế và dường như nó hoạt động.

1) Lý do cho sự khác biệt này trong hành vi là gì?

2) Có bất kỳ sự khác biệt thú vị nào khác giữa chế độ dev và prod mà tôi nên chú ý không?

MORAL: Đảm bảo môi trường lưu trữ sản xuất của bạn sử dụng cùng một phiên bản Ruby như môi trường phát triển địa phương của bạn. :)

Cảm ơn bạn

Tom

Trả lời

8

Phương pháp count chỉ có sẵn trong Ruby 1.9 trở lên. Tôi khuyên bạn nên sử dụng cùng một phiên bản Ruby như máy chủ của bạn để tránh các vấn đề như thế này - rất nhiều đã thay đổi trong 1.9.

+0

Thú vị. Tôi thậm chí không xem xét thực tế là môi trường dev của tôi đã chạy một phiên bản ruby ​​khác với môi trường lưu trữ của tôi. Bây giờ tôi cảm thấy ngớ ngẩn. Tôi có thể xóa câu hỏi này không? ;) +1 – cakeforcerberus

+2

Tôi không khuyên bạn nên sử dụng nó. Người khác có thể có cùng một vấn đề. Tôi chỉ biết câu trả lời bởi vì tôi đã có một vấn đề tương tự một vài tháng trở lại. –

+0

Tôi đã khá chắc chắn điều này đã được giới thiệu ở 1,8, một nơi nào đó ... bit này tôi, tại một thời điểm, và tôi không làm việc với 1,9. –

0

omg, bluehost có Ruby 1.8.6 và bây giờ, một nửa ứng dụng của tôi không hoạt động. Chủ yếu là vì vấn đề này, với số lượng.

+0

Vâng, đó là chính xác những gì đã xảy ra với tôi. Được phát triển cục bộ và chỉ được tải lên máy chủ xanh để khám phá sự khác biệt này giữa phiên bản. Đau đớn. – cakeforcerberus

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