2011-05-23 31 views
12

Ai đó biết cách tôi có thể sử dụng tùy chọn này trong Rails 3.1? Bây giờ CoffeScript đặt một hàm với .call(this) trên mỗi tệp, nhưng tôi muốn xóa nó.Tôi có thể sử dụng tùy chọn "--bare" trong Rails 3.1 cho CoffeeScript như thế nào?

EDIT: "Can't find variable” error with Rails 3.1 and Coffeescript" và "Pattern for CoffeeScript modules" có những gì tôi muốn. Tôi sẽ thay đổi các vars toàn cầu của mình để sử dụng phạm vi @global.

+0

Khá nhiều phụ thuộc vào loại đá quý bạn sử dụng để biên dịch CoffeeScript. –

+0

tiêu chuẩn 'gem' coffee-script'' trong Rails 3.1 –

Trả lời

20

Tôi khuyên bạn không nên làm điều này. Xem câu trả lời của tôi tại Pattern for CoffeeScript modules vì một số lý do tại sao. ("Making đang CoffeeScript của bạn không tương thích với out-of-the-box Rails 3.1" là một lý do khác.) Tốt hơn để chỉ cần sử dụng

window.a = b 

hoặc thậm chí

@a = b 

thay vì a = b khi bạn' đang cố xuất một thứ gì đó ra phạm vi toàn cầu.

Trong các phiên bản trước của Rails 3.1, bare biên dịch đã được bật. Đây là classified as a bug và được sửa trong RC1.

Vì vậy, trong khi tôi khuyến khích mạnh mẽ bạn không nên làm này, dưới đây là cách để biến biên soạn trần lại: Thêm

Tilt::CoffeeScriptTemplate.default_bare = true 

để environment.rb của bạn.

+0

Vâng, tôi đồng ý. Im bắt đầu một dự án mới, vì vậy tôi muốn bắt đầu từ đúng cách, tôi sẽ làm theo chiến lược của bạn. Cảm ơn :) –

+1

Tôi đồng ý nếu bạn chỉ có một số tệp coffeescript, nhưng nếu bạn sử dụng tệp coffeescript cho mỗi lớp/đối tượng bạn thực hiện, bạn không muốn xác định biến toàn cầu cho từng tệp. 1 anyway cho câu trả lời – makevoid

4

Tôi khuyên bạn nên tận dụng lợi thế của việc đóng cửa CoffeeScript và làm theo một mô-đun CommonJS. Nhưng đôi khi, đôi khi, nó là OK để muốn sử dụng tùy chọn --are. Trong trường hợp của tôi, khi dựng một trình trợ giúp đặc tả Jasmine để tôi có thể giữ mọi thứ ở cấp cao nhất và cũng tận dụng lợi thế của chỉ thị Sprockets bao gồm trong các thông số kỹ thuật của Jasmine.

Để kết thúc, tôi tạo ra viên đá quý "sprockets-blackcoffee", mà bạn có thể tìm hiểu ở đây. https://github.com/metaskills/sprockets-blackcoffee

+1

Tôi bây giờ nhận ra rằng tất cả mọi thứ phụ thuộc vào quan điểm và loại dự án. Như trong trường hợp của bạn, tôi đồng ý. :) –

+0

Rất tiện lợi. Nội dung của bạn đã được cắt xén rất nhiều trong vài ngày qua, khi tôi sử dụng minitest và CoffeeScript trong Rails 3.2 ... Chúc mừng! :-) –

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