我正在构建一个Rails应用程序,它使用Hunspell和hunspell-ffi gem,以便Ruby可以与之交互。我正在将应用程序部署到heroku,但不幸的是,它需要在服务器上安装Hunspell才能让gem工作。
有什么方法可以让我在Heroku上安装猎杀吗?或者我必须迁移到EC2?
提前感谢:)
发布于 2011-08-15 04:43:09
除非我弄错了或者有什么改变(我找不到任何证据),否则你不能在Heroku上安装外部本地库。如果还没有安装这个库(我认为对于ImageMagick和其他系统来说就是这种情况),那么您将无法使用gem。
发布于 2013-02-12 17:51:06
您需要构建所需的Hunspell库,并将其直接包含在Heroku项目中。
Heroku在64位Ubuntu上运行,因此二进制文件必须在该系统下编译。最好的方法是简单地使用Heroku's Vulcan build server在Heroku实例上编译。
为Heroku编译
gem install vulcanvulcan create vulcan-compile-me的最后一个参数是您自己的应用程序名称。vulcan build -v -s ./hunspell-1.3.2告诉Vulcan构建它,并自动将完成的产品下载到/tmp/hunspell..构建服务器需要cloudant add-on,它是自动安装的,但您必须确保有一个经过验证的(添加信用卡的) Heroku帐户。如果在没有构建输出的第六步中得到错误,那么执行heroku addons:add cloudant --app vulcan-compile-me
添加到您的项目
heroku config:add LD_LIBRARY_PATH=vendor/hunspell/lib.安装字典
从Open Office下载一些词典并将其添加到项目中。一个好的位置是根级别的名为dictionaries的文件夹。然后,在Ruby中初始化Hunspell时会引用此路径。
http://extensions.services.openoffice.org/dictionary
ftp://sunsite.informatik.rwth-aachen.de/pub/mirror/OpenOffice/contrib/
使用
安装你最喜欢的Hunspell gem,我用的是hunspell-ffi。有一个newer gem for Hunspell,但我更喜欢以前的FFI。要使用字典,请使用字典、文件夹路径和语言(与字典文件名匹配的语言)初始化Hunspell对象。
dict = Hunspell.new("dictionaries", "en_US")
if dict.check('caribean') == false
suggestions = dict.suggest('caribean')
if (suggestions.size)
correction = suggestions.first # returns 'caribbean'
end
end为更复杂的项目提供服务
您还可以通过将第一步中由Vulcan服务器构建的tar放入可公共访问的服务器(如Google Storage )中,然后更改Heroku构建包以在每次启动时下载tar,从而将库添加到您的项目中。
heroku config:set BUILDPACK_URL=https://github.com/peterkeen/heroku-buildpack-vendorbinaries.githeroku config:add LD_LIBRARY_PATH=lib发布于 2011-08-15 04:28:05
签出此url:http://gems-summary.heroku.com/2011-07-19
Heroku对gem社区的支持之多令人惊讶。因此,您所需要做的就是将gem添加到您的包中,因为Hunspell位于rubygems上,安装包,然后部署。
Gemfile
source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem 'hunspell'然后添加到git:
git add .
git commit -m 'added hunspell'然后捆绑:
bundle并部署:
git push herokuhttps://stackoverflow.com/questions/7059245
复制相似问题