2014-06-16 13 views
5

Ứng dụng heroku của tôi bị lỗi vì không thể tìm thấy mô-đun 'SecureRandom'. Tôi đang chỉ định phiên bản Ruby của tôi trong gemfile, và máy tính của tôi, gemfile và Heroku tất cả dường như khớp với các số phiên bản Ruby, mặc dù không phải là số bản vá.Heroku không thể tìm thấy SecureRandom

Các bài đăng khác đã đề xuất chỉ usr/bin/heroku vào một tệp Ruby cụ thể, nhưng tôi không chắc chắn cách thực hiện điều đó (Tôi không có thùng Heroku trong ứng dụng của mình). Điều này có vẻ giống như một lỗi phiên bản Ruby. Làm thế nào tôi có thể cố gắng sửa lỗi này?

class OrderItem < ActiveRecord::Base 
    require 'SecureRandom' 

    ... 
end 

Heroku log:

/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.0.3/lib/active_support/dependencies.rb:229:in `require': No such file to load -- SecureRandom (LoadError) 

Gemfile:

source 'https://rubygems.org' 
ruby '2.0.0' 

dòng lệnh:

/ $ heroku run ruby -v 
Running `ruby -v` attached to terminal... up, run.9318 
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-linux] 

/$ ruby -v 
ruby 2.0.0p451 (2014-02-24 revision 45167) [x86_64-darwin12.5.0] 

Cảm ơn trước.

+0

tại sao bạn camelize? – apneadiving

+0

Tôi đã theo các mô-đun ấn tượng và các lớp học đã được khai báo trong trường hợp hỗn hợp, như đã nêu trong các trang web như thế này: http://itsignals.cascadia.com.au/?p=7. Nhưng rõ ràng, một người không bao gồm chúng với trường hợp hỗn hợp, vì điều đó đã giải quyết được vấn đề. Cảm ơn bạn! – steel

+0

tệp luôn là chữ thường, các lớp luôn được lạc đà – apneadiving

Trả lời

11

Tên thực tế là securerandom, tất cả chữ thường. Hệ thống tập tin Linux thường phân biệt chữ hoa chữ thường.

Vì vậy, hãy thay đổi yêu cầu để:

require 'securerandom' 
+1

Chúng ta nên tôn trọng thực tế: lạc đà thích lạc đà – apneadiving

+0

Điều đó đã làm điều đó, cảm ơn bạn! Và có vẻ như Heroku đang trên Linux, trong khi tôi đang ở trên Unix cục bộ, vì vậy đó có thể là lý do tại sao nó chỉ thất bại khi tôi đẩy. Bất kỳ ý tưởng nào tại sao các mô-đun được khai báo trong trường hợp hỗn hợp và được yêu cầu bằng chữ thường? – steel

+1

Tên lớp và mô-đun trong ruby ​​phải luôn luôn được khai báo trong trường hợp lạc đà, nhưng bạn không yêu cầu lớp, bạn đang yêu cầu tệp nơi lớp được khai báo. Tên tệp thực tế phải là 'secure_random' nhưng vì lý do nào đó, chúng quyết định sử dụng [securerandom] (http://www.ruby-doc.org/stdlib-1.9.3/libdoc/securerandom/rdoc/SecureRandom.html) . –

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