Tôi đang cố gắng xây dựng một ứng dụng sử dụng Sinatra, Ruby, rack, haml, pony và SendGrid, với git và RVM để triển khai trên Heroku. Ứng dụng là một biến thể blog nên gửi email có bình luận được gửi trên biểu mẫu. Trên máy chủ địa phương của tôi, khi các hình thức nộp tôi nhận được lỗi sau:Rack/Sinatra LoadError: không thể tải tập tin như vậy
LoadError at/
cannot load such file -- pony
file: tools.rb location: require line: 314
BACKTRACE
(expand)
/Users/Kevin/prog/ruby/Sinatra/Noobs/noobs.rb in block in <top (required)>
require 'pony'
Khi chạy trên Heroku, kết quả hình thức đệ trình trong một lỗi máy chủ nội bộ. Các 'không thể tải tập tin như vậy' lỗi cho thấy rằng tập tin không phải là trên con đường đá quý, nhưng nếu tôi hiểu đúng, hệ điều hành không đồng ý:
➜ noobs git:(master) ✗ bundle show pony
/Users/Kevin/.rvm/gems/[email protected]/gems/pony-1.4
➜ noobs git:(master) echo $GEM_PATH
/Users/Kevin/.rvm/gems/[email protected]:/Users/Kevin/.rvm/gems/[email protected]
Đây là mã nơi ngựa được yêu cầu (noobs.rb):
require 'rubygems'
require 'sinatra'
require 'haml'
require "sinatra/reloader" if development?
# ...
post '/' do
require 'pony'
Pony.mail(:from => params[:name] + "<" + params[:contact] + ">",
Tôi cần làm gì để ngựa hoạt động?
Vì tò mò, tại sao bạn chỉ cần Pony khi biểu mẫu được đăng? Tại sao không chỉ yêu cầu nó một lần khi khởi động ứng dụng? (Tôi không sử dụng Bundler hoặc Heroku, và do đó không thể tư vấn cho bạn về những gì có thể hoặc có thể không sai với cài đặt gem và/hoặc thư viện tải của bạn.) – Phrogz
Ngoài ra, lưu ý rằng trong Ruby 1.9 bạn không cần phải 'require ' ruby gems''; đó là một phần của quá trình cài đặt. Bạn đã thử đặt 'yêu cầu' pony'' trước khi 'yêu cầu' sinatra'' trong ứng dụng đơn giản nhất có thể? – Phrogz
Cảm ơn bạn, Phrogz. Tôi ban đầu yêu cầu ngựa ở đầu với người khác đòi hỏi, và di chuyển nó để phù hợp với một ví dụ tôi đã nhìn thấy. Yêu cầu sau này cho phép ứng dụng chạy cho đến khi bài đăng được gọi. Các yêu cầu 'đá quý ruby' là một còn sót lại từ cố gắng tự thêm đá quý vào đường dẫn tải, mà tôi có thể không làm đúng. Tôi nên xóa nó đi. Tôi đang cố gắng làm một ứng dụng thậm chí đơn giản hơn bắt đầu với Pony và nó vẫn chưa nổ tung, vì vậy có lẽ sẽ có trái. Tôi sẽ đăng kết quả. –