バンドラーを取得して特定のプラットフォーム用の 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