[英]Uninitialized constant error after uploading on Heroku
存在以下問題:我正在本地計算機上開發一些Rails應用程序,並且一切正常,應用程序可以運行,但是在Heroku上載后會出現以下錯誤(我使用“ heroku日志”看到了):
NameError (uninitialized constant Api::V1::ApiV1Controller::UndefinedTokenTypeError)
我的代碼:
def require_token
begin
Some code which generates UndefinedTokenTypeError
rescue UndefinedTokenTypeError => e
render json: e.to_json
end
end
UndefinedTokenTypeError位於lib / errors.rb文件中:
class EmptyCookieParamsError < StandardError
def to_json
{ result_code: 1 }
end
end
class UndefinedTokenTypeError < StandardError
def to_json
{ result_code: 2 }
end
end
我在本地計算機(2.0)上安裝了相同版本的Rails / Ruby。 我該如何解決? 謝謝。
在Heroku上運行將使用生產環境。 檢查一下環境/development.rb和環境/production.rb之間的區別
您可以嘗試在本地計算機( rails server -e production
上以生產模式運行應用程序
我猜您的config.autoload_paths設置不正確。 應該在config / application.rb中
據我所知 ,您可能遇到了與CORS相關的問題,或者您的身份驗證不正確
跨源資源共享
CORS是標准的HTML協議 ,它基本上控制哪些網站可以“ ping”您的網站。 Facebook&Twitter的第三方小部件只能工作,因為它們允許任何站點向其發送數據
為了使Rails與CORS一起使用,建議安裝Rack-CORS gem 。 這將使您可以將此代碼放入config/application.rb
文件中:
#CORS
config.middleware.use Rack::Cors do
allow do
origins '*'
resource '/data*', :headers => :any, :methods => :post
end
end
因為您在Heroku上遇到這些問題,所以可能是您遇到的問題。 即使不是,欣賞CORS的工作方式也絕對有用
認證方式
除非您的API是公開的,否則您可能會對請求進行身份驗證
我們這樣做的方法是使用authenticate_or_request_with_http_token
函數,可以在這里看到:
#Check Token
def restrict_access
authenticate_or_request_with_http_token do |token, options|
user = User.exists?(public_key: token)
@token = token if user
end
end
我們學習了如何通過Railscast來做到這一點, 該Railscast討論了如何保護API。 我詢問您的代碼的原因是因為以上內容對我們在Heroku上有效,您可以從中獲得一些好處!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.