Использование Hunspell с Heroku - PullRequest
       71

Использование Hunspell с Heroku

0 голосов
/ 14 августа 2011

Я создаю приложение Rails, которое использует Hunspell и гем hunspell-ffi, чтобы Ruby мог взаимодействовать с ним. Я развертываю приложение на heroku, но, к сожалению, для работы гема необходимо установить Hunspell на сервере.

Могу ли я установить Hunspell на Heroku? Или мне придется перейти на EC2?

Заранее спасибо:)

Ответы [ 4 ]

3 голосов
/ 12 февраля 2013

Вам необходимо собрать необходимую библиотеку Hunspell и напрямую включить ее в проект Heroku.

Heroku работает на 64-битной Ubuntu, поэтому двоичный файл должен быть скомпилирован в этой системе. Лучший подход - просто использовать сервер сборки Heroku Vulcan для компиляции на экземпляре Heroku.

Компиляция для Heroku

  1. gem install vulcan
  2. vulcan create vulcan-compile-me последний аргумент - ваше собственное имя приложения.
  3. Загрузить исходный текст Hunspell
  4. Extract
  5. vulcan build -v -s ./hunspell-1.3.2 Сообщает Vulcan о его создании и автоматически загружает готовый продукт в /tmp/hunspell..

Сервер сборки требует надстройки cloudant, она устанавливается автоматически, но вы должны убедиться, что у вас есть подтвержденная учетная запись Heroku (добавлена ​​кредитная карта). Если вы получили ошибки на шестом шаге без вывода сборки , тогда выполните heroku addons:add cloudant --app vulcan-compile-me

Добавление в ваш проект

  1. Извлеките tar-сборку Heroku Vulcan из / tmp
  2. Скопируйте всю папку lib в vendor / hunspell в корневом каталоге вашего проекта
  3. Скажите Heroku, где искать библиотеки: heroku config:add LD_LIBRARY_PATH=vendor/hunspell/lib.

Установить словари

Загрузите несколько словарей из Open Office и добавьте их в свой проект. Хорошее расположение - папка с именем словарей на корневом уровне. На этот путь ссылаются при инициализации Hunspell в Ruby.

http://extensions.services.openoffice.org/dictionary

FTP: //sunsite.informatik.rwth-aachen.de/pub/mirror/OpenOffice/contrib/

Использование

Установите ваш любимый камень Hunspell, я использую hunspell-ffi . Для 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

Вендинг для более сложных проектов

Вы также можете добавить библиотеку в свой проект, поместив tar, созданный сервером Vulcan, на первом этапе, в общедоступный сервер, такой как Google Storage, а затем изменив пакет сборки Heroku, чтобы загружать tar при каждом запуске экземпляра.

  1. heroku config:set BUILDPACK_URL=https://github.com/peterkeen/heroku-buildpack-vendorbinaries.git
  2. Пакет сборки поставщика ищет файл .vendor_urls на корневом уровне с HTTP-связями для установки tar-шариков (необходимо завершить работу новой строкой). http://commondatastorage.googleapis.com/developer.you.com/hunspell-heroku-1.3.tgz
  3. Vendoring распаковывает tar в корневую папку, поэтому путь к lib для настроек Heroku будет просто «lib». heroku config:add LD_LIBRARY_PATH=lib
0 голосов
/ 15 августа 2011

Если я не ошибаюсь или что-то не изменилось (я не могу найти никаких доказательств этого), вы не можете устанавливать внешние библиотеки на Heroku.Если библиотека еще не установлена ​​(думаю, это касается ImageMagick и, возможно, других), вы не сможете использовать этот гем.

0 голосов
/ 17 августа 2011

С Bundler вы сможете установить любой драгоценный камень. Согласно http://devcenter.heroku.com/articles/how-do-i-install-gems-for-my-app, «Практически любой драгоценный камень - даже тот, у которого есть нативные зависимости - можно установить с помощью Bundler. Если есть определенный драгоценный камень, который не будет установлен в Heroku, отправьте заявку в службу поддержки».

AFAIK, когда ваше приложение запускается, гемы в Gemfile на лету устанавливаются на сервер, на котором запускается ваше приложение.

В стеке Aspen есть предустановленные драгоценные камни, но вы все равно сможете добавлять драгоценные камни, не предустановленные.

В бамбуковом стеке нет предустановленных гемов, поэтому все зависимости гемов должны быть объявлены явно. Я считаю, что то же самое для стека Селадон.

0 голосов
/ 15 августа 2011

Оформить заказ по этому URL: http://gems -summary.heroku.com / 2011-07-19

Поразительно, сколько поддержки Heroku оказывает сообществу драгоценных камней. Поэтому все, что вам нужно, это добавить гем в ваш пакет, так как 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 heroku
...