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