Read MS Word .doc file with ruby and win32ole

Posted by bmalets on Stack Overflow See other posts from Stack Overflow or by bmalets
Published on 2014-06-04T09:22:41Z Indexed on 2014/06/04 9:24 UTC
Read the original article Hit count: 622

I'm trying ot read .doc file with ruby, I use win32ole library.

IT my code:


require 'win32ole'

class DocParser

  def initialize
    @content = ''
  end

  def read_file file_path
    begin
      word = WIN32OLE.connect( 'Word.Application' )
      doc  = word.activedocument
    rescue
      word = WIN32OLE.new( 'Word.Application' )
      doc  = word.documents.open( file_path )
    end
    word.visible = false
    doc.sentences.each{ |x| @content 

I kick off doc reading with DocParser.new.read_file('path/file.doc')

When I run this using rails c - I don't have any problems, it's working fine. But when I run it using rails (e.g. after button click), once in a while (every 3-4 time) this code crashes with error:


WIN32OLERuntimeError (failed to create WIN32OLE object from `Word.Application'
    HRESULT error code:0x800401f0
      CoInitialize has not been called.):
  lib/file_parsers/doc_parser.rb:14:in `initialize'
  lib/file_parsers/doc_parser.rb:14:in `new'
  lib/file_parsers/doc_parser.rb:14:in `rescue in read_file'
  lib/file_parsers/doc_parser.rb:10:in `read_file'
  lib/search_engine.rb:10:in `block in search'
  lib/search_engine.rb:43:in `block in each_file_in'
  lib/search_engine.rb:42:in `each_file_in'
  lib/search_engine.rb:8:in `search'
  app/controllers/home_controller.rb:9:in `search'


  Rendered c:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (0.0ms)
  Rendered c:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_trace.text.erb (2.0ms)
  Rendered c:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.text.erb (2.0ms)
  Rendered c:/Ruby193/lib/ruby/gems/1.9.1/gems/actionpack-4.1.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb (56.0ms)

Aditionaly, this code read doc file successfully, but after a few seconds rails crashes: see this gist

What is my problem? How can I fix it? Please, help!

© Stack Overflow or respective owner

Related posts about ruby-on-rails-4

Related posts about doc