在Heroku中配置环境路径

时间:2012-11-11 05:15:51

标签: ruby-on-rails heroku tesseract

My Rails应用程序通过localhost在我的机器上运行良好,但是当我将它部署到Heroku时,我得到了这个错误列表:

2012-11-11T04:59:20+00:00 heroku[web.1]: Starting process with command `bundle exec thin start -R config.ru -e production -p 38941`
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/ffi-inline-0.0.4/lib/ffi/inline/builders/c.rb:114:in `shared_object'
2012-11-11T04:59:33+00:00 app[web.1]: /app/vendor/bundle/ruby/1.9.1/gems/ffi-inline-0.0.4/lib/ffi/inline/compilers/gcc.rb:29:in `compile': compile error: see logs at /tmp/.ffi-inline-18803/85aad7364f11885370e58c4391df70e29ef22bbe.log (CompilationError)
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/ffi-inline-0.0.4/lib/ffi/inline/builders.rb:87:in `instance_eval'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/ffi-inline-0.0.4/lib/ffi/inline/builders.rb:87:in `build'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/ffi-inline-0.0.4/lib/ffi/inline/inline.rb:39:in `inline'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/ffi-inline-0.0.4/lib/ffi/inline/inline.rb:54:in `singleton_inline'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/tesseract-ocr-0.1.5/lib/tesseract/c.rb:34:in `<module:C>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/tesseract-ocr-0.1.5/lib/tesseract/c.rb:31:in `<module:Tesseract>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/tesseract-ocr-0.1.5/lib/tesseract/c.rb:29:in `<top (required)>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/tesseract-ocr-0.1.5/lib/tesseract/api.rb:26:in `<top (required)>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/ffi-inline-0.0.4/lib/ffi/inline/builders.rb:90:in `block in build'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/tesseract-ocr-0.1.5/lib/tesseract-ocr.rb:35:in `<top (required)>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.1/lib/bundler/runtime.rb:68:in `block (2 levels) in require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.1/lib/bundler/runtime.rb:66:in `each'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.1/lib/bundler/runtime.rb:68:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.1/lib/bundler/runtime.rb:55:in `each'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.1/lib/bundler/runtime.rb:55:in `require'
2012-11-11T04:59:33+
00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.1/lib/bundler.rb:128:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/config/application.rb:7:in `<top (required)>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/config/environment.rb:2:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/bundler-1.2.1/lib/bundler/runtime.rb:66:in `block in require'
2012-11-11T04:59:33+00:00 app[web.1]:   from config.ru:3:in `require'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/config/environment.rb:2:in `<top (required)>'
2012-11-11T04:59:33+00:00 app[web.1]:   from config.ru:3:in `block in <main>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/controllers/controller.rb:181:in `load_rackup_config'
2012-11-11T04:59:33+00:00 app[web.1]:   from config.ru:1:in `new'
2012-11-11T04:59:33+00:00 app[web.1]:   from config.ru:1:in `<main>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/bin/thin:6:in `<top (required)>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/bin/thin:19:in `load'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/bin/thin:19:in `<main>'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/rack/adapter/loader.rb:33:in `eval'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/rack/adapter/loader.rb:33:in `load'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/controllers/controller.rb:71:in `start'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/runner.rb:185:in `run_command'
2012-11-11T04:59:33+00:00 app[web.1]:   from /app/vendor/bundle/ruby/1.9.1/gems/thin-1.4.1/lib/thin/runner.rb:151:in `run!'
2012-11-11T04:59:34+00:00 heroku[web.1]: Process exited with status 1
2012-11-11T04:59:38+00:00 heroku[router]: Error H10 (App crashed)

除了Heroku可能与我正在使用的Ruby Tesseract gem有些问题之外,我似乎无法做出正面或反面。也许是依赖的问题?

更新:

进一步搜索后,结果是the issue is related to the Tesseract gem

根据支持票我需要设置这些路径......

ENV['CFLAGS'] = '-I/path/to/the/headers'
ENV['LDFLAGS'] = '-L/path/to/the/libs'

...但我不知道如何设置它们或者在部署到Heroku的Rails应用程序上实际上应该是header / libs的路径。任何见解?

2 个答案:

答案 0 :(得分:3)

这是Heroku对我与他们一起提出的关于此事的票的回复:


您好,

不幸的是,我们不支持在我们的堆栈中安装额外的库或二进制文件。最好的解决方法是将这些提供给您的项目。您需要使用64位Linux版本才能使它们在Heroku上运行;静态编译还可以帮助确保包含所需的任何依赖项。同样,对于依赖外部库的gem,我们建议静态编译gem并将其存储到项目中。

我们意识到这不是一项微不足道的任务,而且很难开展工作,我们希望将来能够提供一种更简单的方法。不幸的是,当这种改进的功能可用时,我们没有ETA。

如果您希望尝试提供二进制文件,库或gem,则可以使用Heroku作为构建环境。我们的一位工程师创建了一个构建服务器,允许您上传源代码,运行编译步骤,然后下载生成的二进制文件。你可以在这里找到这个项目: https://github.com/heroku/vulcan

谢谢, Heroku支持


换句话说,去其他地方部署。

答案 1 :(得分:1)

我也面临同样的问题,希望我们能互相帮助。

我找到了a way to set config var on Heroku。根据meh对github的评论,看起来它需要在Heroku上安装Tesseract。也许你可以问Heroku在哪里安装位置?

我还发现这个other gem成功地融入了Heroku。不幸的是,它仍然使用tesseract 2.04。