我正在嘗試使用Sinatra,Ruby,rack,haml,pony和SendGrid構建一個應用程序,並使用git和RVM在Heroku上進行部署。該應用程序是一個博客變體,應發送一封電子郵件,並在表單上提交評論。在我的本地服務器上,當表單提交我得到以下錯誤:Rack/Sinatra LoadError:無法加載這樣的文件
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'
當在Heroku上運行,表單提交導致內部服務器錯誤。該「無法加載這樣的文件」的錯誤提示,該文件是不是寶玉的道路上,但如果我理解正確的話,操作系統不同意:
➜ 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]
這裏是需要小馬代碼(noobs.rb):
require 'rubygems'
require 'sinatra'
require 'haml'
require "sinatra/reloader" if development?
# ...
post '/' do
require 'pony'
Pony.mail(:from => params[:name] + "<" + params[:contact] + ">",
我需要做些什麼才能讓小馬工作?
出於好奇,爲什麼只有當表格發佈時才需要小馬?爲什麼不在應用程序啓動時只需要一次? (我不使用Bundler或Heroku,所以不能告訴你關於你的gem安裝和/或加載庫可能會或可能沒有問題。) – Phrogz
另外,請注意,在Ruby 1.9下,你不需要'require'紅寶石寶石';它是安裝的一部分。在最簡單的應用程序中,在「require」sinatra''之前是否嘗試過只需要'require'pony''? – Phrogz
謝謝你,Phrogz。我原本要求小馬在其他需求的頂部,並將其移至與我見過的例子相匹配的位置。稍後需要它允許應用程序運行,直到發佈帖子。要求'寶石寶石'是試圖手動添加寶石到加載路徑的剩餘部分,我可能沒有做到正確。我應該刪除它。我試圖做一個更簡單的應用程序開始與小馬,它還沒有炸掉,所以也許這將結果。我會公佈結果。 –