小编Mic*_*iak的帖子

HTTP解析错误,格式错误的请求 - Ruby on Rails

在尝试运行Ruby on Rails应用程序时,我在终端中看到以下错误.

HTTP parse error, malformed request (): #<Puma::HttpParserError: Invalid HTTP format, parsing fails.>
2017-03-12 13:10:02 -0400: ENV: {"rack.version"=>[1, 3], "rack.errors"=>#<IO:<STDERR>>, "rack.multithread"=>true, "rack.multiprocess"=>false, "rack.run_once"=>false, "SCRIPT_NAME"=>"", "QUERY_STRING"=>"", "SERVER_PROTOCOL"=>"HTTP/1.1", "SERVER_SOFTWARE"=>"puma 3.4.0 Owl Bowl Brawl", "GATEWAY_INTERFACE"=>"CGI/1.2"}
Run Code Online (Sandbox Code Playgroud)

浏览器错误:

This site can’t provide a secure connection. localhost sent an invalid response. ERR_SSL_PROTOCOL_ERROR*
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容

  • 清除浏览器缓存并重新启动
  • 恢复到当时正在运行的GIT中的旧提交
  • 重启终端
  • 运行功能正常的其他rails应用程序

ruby-on-rails puma

6
推荐指数
3
解决办法
9100
查看次数

尝试从Word文档中获取内容时,获取"Ole :: Storage :: FormatError:OLE2签名无效"

我正在使用Rails 5.我想从Word文档(.doc)中获取文本,所以我正在使用此代码

  text = nil
  MSWordDoc::Extractor.load(file_location) do |ctl00_MainContent_List1_grdData|
    text = contents.whole_contents
  end
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误.我的Gemfile中有这个gem

gem 'msworddoc-extractor'
Run Code Online (Sandbox Code Playgroud)

要从Word文档中获取内容还需要做些什么?如果我能.docx像文件一样对文件应用相同的代码,那就太好了.doc.

/Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/support.rb:201: warning: constant ::Fixnum is deprecated
Ole::Storage::FormatError: OLE2 signature is invalid
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:378:in `validate!'
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:370:in `initialize'
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:112:in `new'
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:112:in `load'
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:79:in `initialize'
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:85:in `new'
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/ruby-ole-1.2.12/lib/ole/storage/base.rb:85:in `open'
    from /Users/davea/.rvm/gems/ruby-2.4.0/gems/msworddoc-extractor-0.2.0/lib/msworddoc/extractor.rb:11:in `load'
    from /Users/davea/Documents/workspace/myproject/app/services/msword_processor_service.rb:12:in `pre_process_data'
    from /Users/davea/Documents/workspace/myproject/app/services/abstract_import_service.rb:88:in `process_race_data'
    from (irb):2
    from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/console.rb:65:in `start'
    from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/console_helper.rb:9:in `start'
    from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
    from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
    from /Users/davea/.rvm/gems/ruby-2.4.0@global/gems/railties-5.0.1/lib/rails/commands.rb:18:in `<top (required)>'
    from …
Run Code Online (Sandbox Code Playgroud)

ruby ole ms-word doc ruby-on-rails-5

6
推荐指数
1
解决办法
619
查看次数

如何从 Rails 取消昂贵的 Postgresql 查询?

在我的 Rails 应用程序中,我有一个负责生成报告的控制器。其中一些报告需要很长时间才能生成,在 Heroku 上超过了 30 秒的限制。在这种情况下,我想在 25 秒后向用户显示通知并取消数据库查询。我最初的想法是使用Timeout.

class ReportsController < ApplicationController
  def expensive_report
    Timeout.timeout(25) do
      @results = ExpensiveQuery.new(params).results
    end
  rescue Timeout::Error
    render action: "timeout"
  end
end
Run Code Online (Sandbox Code Playgroud)

超时工作正常,但不会取消相应的查询。在 Rails 控制台中很容易重现

begin
  Timeout.timeout(1) do
    ActiveRecord::Base.connection.execute("SELECT pg_sleep(10)")
  end
rescue Timeout::Error
  puts "Timeout"
end

result = ActiveRecord::Base.connection.execute("SELECT 1 AS value")
puts result[0]["value"]
Run Code Online (Sandbox Code Playgroud)

此代码将输出“超时”,然后在线阻塞,result = ActiveRecord::Base.connection.execute("SELECT 1 AS value")直到pg_sleep查询完成。

如何从 Rails 中取消此类查询?我在 Heroku 上托管我的应用程序,因此权限仅限于运行诸如pg_cancel_backend或 之类的命令pg_terminate_backend

postgresql ruby-on-rails heroku

5
推荐指数
1
解决办法
1160
查看次数

标签 统计

ruby-on-rails ×2

doc ×1

heroku ×1

ms-word ×1

ole ×1

postgresql ×1

puma ×1

ruby ×1

ruby-on-rails-5 ×1