0

私は、Rubyがインターフェースできるように、Hunspellとhunspell-ffigemを使用するRailsアプリを構築しています。アプリをherokuにデプロイしていますが、残念ながら、gemを機能させるには、サーバーにHunspellをインストールする必要があります。

HunspellをHerokuにインストールする方法はありますか?または、EC2に移行する必要がありますか?

前もって感謝します :)

4

4 に答える 4

3

必要なHunspellライブラリをビルドして、Herokuプロジェクトに直接含める必要があります。

Herokuは64ビットUbuntuで実行されるため、バイナリはそのシステムでコンパイルする必要があります。最善のアプローチは、HerokuのVulcanビルドサーバーを使用してHerokuインスタンスでコンパイルすることです。

Heroku用にコンパイル

  1. gem install vulcan
  2. vulcan create vulcan-compile-me最後の引数はあなた自身のアプリ名です。
  3. Hunspellソースをダウンロード
  4. エキス
  5. vulcan build -v -s ./hunspell-1.3.2Vulcanにビルドするように指示し、完成した製品を/ tmp/hunspellに自動的にダウンロードします。

ビルドサーバーにはcloudantアドオンが必要です。これは自動的にインストールされますが、確認済みの(クレジットカードが追加された)Herokuアカウントを持っていることを確認する必要があります。ビルド出力がないステップ6でエラーが発生した場合は、heroku addons:add cloudant --app vulcan-compile-me

プロジェクトに追加する

  1. /tmpからHerokuVulcanビルドtarを抽出します
  2. libフォルダー全体をプロジェクトルートディレクトリのvendor/hunspellにコピーします
  3. Herokuにライブラリを探す場所を教えてください:heroku config:add LD_LIBRARY_PATH=vendor/hunspell/lib

辞書をインストールする

Open Officeからいくつかの辞書をダウンロードして、プロジェクトに追加します。適切な場所は、ルートレベルの辞書と呼ばれるフォルダです。このパスは、RubyでHunspellを初期化するときに参照されます。

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

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

使用する

お気に入りのHunspellgemをインストールします。私は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

より複雑なプロジェクトのためのベンドリング

また、最初のステップでVulcanサーバーによってビルドされたtarをGoogle Storageなどのパブリックアクセス可能なサーバーに配置し、Herokuビルドパックを変更してインスタンスの起動ごとにtarをダウンロードすることで、ライブラリをプロジェクトにベンダー化することもできます。

  1. heroku config:set BUILDPACK_URL=https://github.com/peterkeen/heroku-buildpack-vendorbinaries.git
  2. ベンダービルドパックは、インストールするtarボールへのHTTPリンクを含むルートレベル の.vendor_urlsファイルを探します(機能するには、新しい行で終了する必要があります)。http://commondatastorage.googleapis.com/developer.you.com/hunspell-heroku-1.3.tgz
  3. Vendoringはtarをルートフォルダーに解凍するため、Heroku設定のlibパスは「lib」になります。heroku config:add LD_LIBRARY_PATH=lib
于 2013-02-12T09:51:06.160 に答える
0

このURLをチェックアウトしてください:http://gems-summary.heroku.com/2011-07-19

Herokuがgemコミュニティに対してどれほどのサポートを提供しているかは驚くべきことです。つまり、Hunspellはrubygemsを使用しているため、gemをバンドルに追加し、バンドルをインストールしてからデプロイするだけです。

Gemfile

source 'http://rubygems.org'
gem 'rails', '3.0.5'
gem 'hunspell'

次に、gitに追加します。

git add .
git commit -m 'added hunspell'

次にバンドル:

bundle

そしてデプロイ:

 git push heroku
于 2011-08-14T20:28:04.803 に答える
0

私が間違っているか、何かが変更されていない限り(これの証拠は見つかりません)、Herokuに外部ネイティブライブラリをインストールすることはできません。ライブラリがまだインストールされていない場合(ImageMagickやその他の場合はそうだと思います)、gemを使用することはできません。

于 2011-08-14T20:43:08.840 に答える
-1

Bundlerを使用すると、任意のgemをインストールできるはずです。http://devcenter.heroku.com/articles/how-do-i-install-gems-for-my-appによると、「ほとんどすべてのgem(ネイティブの依存関係があるものも含む)は、Bundlerを使用してインストールできます。 Herokuにインストールされない特定の宝石については、サポートチケットを送信してください。」

AFAIK、アプリがスピンアップされると、Gemfile内のgemは、アプリがスピンアップされたサーバーにオンザフライでインストールされます。

Aspenスタックにはプレインストールされたgemがありますが、プレインストールされていないgemを追加できるはずです。

バンブースタックにはプリインストールされたgemがないため、すべてのgem依存関係を明示的に宣言する必要があります。それはセラドンスタックでも同じだと思います。

于 2011-08-16T20:18:50.347 に答える