Tôi đang cố tải SDK Tokbox trong đường ray 3. Tôi đã đặt thư viện vào thư mục/lib của mình, vì vậy cấu trúc thư mục của tôi trông giống như sau:Thư viện Rails 3 không tải cho đến khi yêu cầu
/lib
opentok.rb
/OpenTok
Exceptions.rb
OpenTokSDK.rb
Session.rb
Tôi đang tải tất cả các file trong thư mục/lib bằng cách sử dụng sau đây trong application.rb:
fileconfig.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
khác tôi có trong/lib thư mục tự động tải chỉ tốt, nhưng thư viện này không tải cho đến khi tôi thêm một require 'OpenTok'
:
ruby-1.9.2-p0 > OpenTok
NameError: uninitialized constant OpenTok
ruby-1.9.2-p0 > OpenTok::OpenTokSDK
NameError: uninitialized constant OpenTok
ruby-1.9.2-p0 > require 'OpenTok'
=> ["OpenTok"]
ruby-1.9.2-p0 > OpenTok
=> OpenTok
ruby-1.9.2-p0 > OpenTok::OpenTokSDK
=> OpenTok::OpenTokSDK
Cách chính xác để tải thư viện trong Rails 3 là gì?
chung , bạn muốn sử dụng 'config.autoload_paths' trong Rails, để nó có thể tải/dỡ các tập tin đúng cách. – m33lky
Tôi đồng ý, thường sẽ là một ý tưởng tốt hơn, nhưng không phải lúc nào cũng có thể, ví dụ nếu bạn có một tệp mở lại lớp * hiện có * thay vì xác định lớp * mới *. Bất kỳ đề xuất cho những gì để làm trong trường hợp đó? –
@ m33lky Tôi đang cố tải các lớp trong thư mục lib và thư mục con của thư mục lib nhưng đường ray không thích nó. Rails không thích thư mục con và tải tự động. Tôi không thích công việc này xung quanh vì nó bỏ qua bộ đệm ẩn lớp nhưng tôi không có bất kỳ tùy chọn nào khác. Tôi đổ lỗi cho đường ray cho đường ray. – Vinnyq12