1

Passbook gemをいじる基本的な Sinatra アプリを作成しています。

私のアプリは で正常に動作localhostしますが、Heroku で実行しようとすると、次のエラー メッセージが表示されます。

/app/vendor/bundle/ruby/2.0.0/gems/passbook-0.2.1/lib/passbook/pkpass.rb:122:in `outputZip'
/app/vendor/bundle/ruby/2.0.0/gems/passbook-0.2.1/lib/passbook/pkpass.rb:60:in `stream'
/app/vendor/bundle/ruby/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1593:in `call'
NoMethodError - undefined method `write_buffer' for Zip::ZipOutputStream:Class:

passbook.stream.stringこれは、アプリ ファイルの行を呼び出すと発生します。

Passbook はここでは問題ではないと思います。ローカル マシンwrite_bufferのバージョンにはクラス メソッドが存在するようですZip::ZipOutputStreamが、Heroku には存在しません。どうしてこれなの?どうすれば回避できますか?

zipGemfile にとの両方をrubyzip個別に同時に含めようとしましたが、どちらも問題を解決しません。

4

2 に答える 2

1

このようなものを見るたびに、私はいつも自問自答します。Dev/Prod の同等性はありますか? .

そう:

  • ローカルで使用している Ruby のバージョンは何ですか? Heroku で使用しているものとは異なりますか?
  • Gemfile で Ruby のバージョンを指定していますか?
  • どのようにローカルで実行しますか? bundle exec同じ宝石を使って同じ方法で確実に実行するために使用しますか?
于 2013-10-28T14:22:25.687 に答える