2011-10-28 8 views
14

Tôi không chắc chắn nếu điều này là dưa chuột thực sự, nhưng chỉ trong trường hợp một số bạn có một đầu mối về cách sửa lỗi này. Về cơ bản, kiểm tra của tôi đột nhiên ngừng làm việc và khi tôi kiểm tra, nó cho thấy lỗi này:`dirname ': không thể chuyển đổi nil thành String (TypeError)

C:/Vendor/Ruby187/lib/ruby/gems/1.8/gems/cucumber-rails-1.0.0/lib/cucumber/rails3.rb:3 in 'dirname': can't convert nil into String (TypeError) 

Vâng, tôi lần đầu tiên cán mắt lại và chỉ nguyền rủa Windows nhưng tôi đã thử nó trên máy Mac của tôi và tôi đã nhận giống nhau:

/Users/eumir/.rvm/gems/[email protected]/gems/cucumber-rails-0.5.2/lib/cucumber/rails3.rb:3:in `dirname': can't convert nil into String (TypeError) 

Mặc dù vậy, trong các phiên bản đường ray dưa chuột khác nhau, tôi googled và kết quả đầu tiên cho thấy đó là lỗi của nhà cung cấp (mặc dù tôi không thể giải mã được ý chính ... có thể chỉ sao chép nội dung đã dán?) của tất cả, Cucumber IS chạy và tôi chạy vào vấn đề này trong khi chạy rspec spec.

3 manh mối dưới đây chỉ ra rằng đó không phải lỗi của dưa chuột, nhưng tại sao nó đổ lỗi cho dưa leo? NẾU bất kỳ ai trong số các bạn có thể làm sáng tỏ được lý do tại sao điều này xảy ra, bạn sẽ tiết kiệm cho tôi thêm vài giờ nữa.

Trả lời

8

Phiên bản đường ray dưa chuột mới cảnh báo bạn về sự cố này. Cần phải có đường dẫn dưa chuột từ tệp env.rb và không phải trước bằng gói. Để đạt được điều đó, hãy đặt dòng gem cucumber-rails trong nhóm: thử nghiệm trong Gemfile của bạn.

+0

này làm việc cho tôi trên một dự án phiên bản bị khóa cũ. tốt để biết rằng bundler tự động tải đá quý của bạn, đặc biệt là nếu bạn có mã như 'VAR = (cái gì đó) trừ khi được xác định? VAR' bằng đá quý cũ (vì dự án này có) –

20

Điều này đã được gây ra bởi cách trình bao cố gắng "tự động hỏi" đá quý. Trong 1.0, bundler thử tên gem (trong trường hợp này là "dưa chuột-rails") và smothers lỗi nếu tập tin không được tìm thấy (nó không phải là).

Trong bundler 1.1.1, bundler thay thế các trường hợp "-" bằng "/", dẫn đến tự động "dưa chuột/đường ray" dẫn đến tải "tình cờ" được mô tả bởi Ewout.

Để giải quyết, hãy đặt :require => false trong gemfile của bạn.

(Lưu ý: :require => false không có nghĩa là viên ngọc là không bắt buộc, chỉ là Bundler không nên tự động đòi hỏi nó)