Techioz Blog

バンドラーを取得して特定のプラットフォーム用の gem をインストールする

概要

プロジェクトのログインには「fluent-logger」gemを使用しますが、これには「msgpack」が必要です。 Bundle install を実行すると msgpack-1.1.0-x86-mingw32 が取り込まれ、Windows でそれが必要な場合に例外がスローされます。

kernel_require.rb:55:in `require': cannot load such file -- msgpack/msgpack (LoadError)

ただし、この問題には回避策があり、次のように –platform=ruby を指定して gem を再インストールするだけです。

gem uninstall msgpack
gem install msgpack --platform=ruby

他の場所で示されているように、この要件をGemfileに入れようとしましたが(atmリンクが見つかりません)、何も起こりませんでした(前と同じようにmsgpack-1.1.0-x86-mingw32がインストールされました)。

gem 'msgpack', :platforms=>:ruby  

念のため、私は Windows 7 で Ruby 1.9.3p551 (および Bundler v 1.14.6) を使用しています。

希望する人が自分で試してみることができるように、ソースの例を示します。

Gemfile:

source 'http://rubygems.org'

ruby '1.9.3'

gem 'fluent-logger'
gem 'msgpack', :platforms=>:ruby_19 
#for windows local dev msgpack needs to be installed with --platform=ruby

foo.rb

require 'fluent-logger'

logger= Fluent::Logger::FluentLogger.new
#logger.post('idx',{message:'it works'})
puts 'worked'

ロガーは有効な接続を作成しませんが、接続が完了すれば素晴らしいことです。 (ここで唯一重要なことは、Gemfile が正しいバージョンの msgpack (私の場合は 1.1.0 ではなく 1.1.0-x86-mingw32) を取り込まないということです)

解決策

http://bundler.io/man/gemfile.5.html

上記からコピーして貼り付けます。

したがって、あなたの場合、試してみてください

gem 'msgpack', :platforms=>:ruby_19