Heroku Rails 应用无法为爬虫找到视图

Heroku Rails App Can't Find Views For Crawlers

我的 heroku 应用程序对普通网络请求的响应很好:http://feedmevr.herokuapp.com/uploads/10

不幸的是,当使用 Facebook Debugger or Twitter Debugger 它 returns 这些日志出现 500 错误:

2016-06-13T23:30:14.595942+00:00 heroku[router]: at=info method=GET path="/uploads/10" host=feedmevr.herokuapp.com request_id=50451e5c-eda1-4225-83f9-cff8c183fd82 fwd="104.7.65.62" dyno=web.1 connect=2ms service=101ms status=200 bytes=8533
2016-06-13T23:30:29.974017+00:00 heroku[router]: at=info method=GET path="/robots.txt" host=feedmevr.herokuapp.com request_id=09617086-d1d1-49d2-9e51-6b6bf4f90917 fwd="199.59.148.209" dyno=web.1 connect=1ms service=2ms status=200 bytes=154
2016-06-13T23:30:30.141722+00:00 app[web.1]:   Upload Load (2.0ms)  SELECT  "uploads".* FROM "uploads" WHERE "uploads"."id" =  LIMIT 1  [["id", 10]]
2016-06-13T23:30:30.117058+00:00 app[web.1]: Processing by UploadsController#show as */*
2016-06-13T23:30:30.117070+00:00 app[web.1]:   Parameters: {"id"=>"10"}
2016-06-13T23:30:30.178367+00:00 app[web.1]:
2016-06-13T23:30:30.178376+00:00 app[web.1]: ActionView::MissingTemplate (Missing template uploads/show, application/show with {:locale=>[:en], :formats=>[:all], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :arb, :jbuilder]}. Searched in:
2016-06-13T23:30:30.178378+00:00 app[web.1]:   * "/app/app/views"
2016-06-13T23:30:30.178379+00:00 app[web.1]:   * "/app/vendor/bundle/ruby/2.2.0/bundler/gems/activeadmin-3b2015c8948b/app/views"
2016-06-13T23:30:30.056383+00:00 app[web.1]: Started GET "/uploads/10" for 199.59.148.209 at 2016-06-13 23:30:30 +0000
2016-06-13T23:30:30.170305+00:00 app[web.1]:    (1.8ms)  SELECT COUNT(*) FROM "zip_files" WHERE "zip_files"."upload_id" =   [["upload_id", 10]]
2016-06-13T23:30:30.177291+00:00 app[web.1]: Completed 500 Internal Server Error in 60ms
2016-06-13T23:30:30.178382+00:00 app[web.1]:
2016-06-13T23:30:30.178383+00:00 app[web.1]:
2016-06-13T23:30:30.178382+00:00 app[web.1]:   app/controllers/uploads_controller.rb:15:in `show'
2016-06-13T23:30:30.178380+00:00 app[web.1]:   * "/app/vendor/bundle/ruby/2.2.0/gems/devise-4.1.0/app/views"
2016-06-13T23:30:30.178381+00:00 app[web.1]: ):
2016-06-13T23:30:30.178379+00:00 app[web.1]:   * "/app/vendor/bundle/ruby/2.2.0/gems/kaminari-0.16.3/app/views"

"/app/app/views" 的搜索特别奇怪,因为它应该在 "/app/views" 中,但我不知道是什么原因造成的。

我试了一整天都没有解决这个问题。从 Puma 服务器切换到 Unicorn 服务器无效。

非常感谢您的帮助...我的头快要穿墙了。

终于想通了。 Rails 应用程序抛出错误,因为我使用的是 respond_to。我不确定为什么这只影响抓取工具。

旧代码:

def show
  respond_to do |format|
    if @upload.downloadable?
      format.all
    else
      flash[:error] = 'The experience you tried to view is invalid'
      format.html { redirect_to :root }
      format.json
    end
  end
end

新代码:

def show
  if request.format != :json && !@upload.downloadable?
    flash[:error] = 'The experience you tried to view is invalid.'
    redirect_to uploads_url
  end
end