簡體   English   中英

在Heroku上載后未初始化的常量錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM