2013-10-28 3 views
0

Я делаю базовое приложение Sinatra, чтобы поиграть с драгоценным камнем Passbook.Неопределенный метод Zip :: ZipOutputStream.write_buffer на Heroku

Мое приложение работает отлично на 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. Почему это? Как я могу обойти это?

Я пробовал, включая как zip, так и rubyzip в моем Gemfile, отдельно и в то же время, и ни один из них не решает проблему.

ответ

1

Всякий раз, когда я вижу что-то подобное, я всегда спрашиваю себя Do you have Dev/Prod parity?.

Итак:

  • Что рубин версия вы используете локально, и оно отличается от того, что вы используете на Heroku?
  • Вы указываете версию Ruby в своем Gemfile?
  • Как вы запускаете локально? Используете ли вы bundle exec, чтобы убедиться, что вы работаете точно так же, с теми же драгоценными камнями?
+0

Оказывается, я использовал ruby ​​1.9.3 локально и 2.0.0 на Heroku. Исправление этого не решило мою проблему. Но когда я запускаю свое приложение с 'bundle exec', я получаю ту же ошибку локально, что и я на Heroku! Шаг назад, но он дает мне больше информации об ошибке, я полагаю. – GMA

+0

Отлично - рад помочь! Теперь это, вероятно, до Gemfile и правильной версии Gem и т. Д. –

0

Наконец-то выяснилось.

Когда я запустил ruby app.rb, все работало локально, но когда я побежал bundle exec ruby app.rb, у меня была такая же ошибка, как и у героку.

Я обновил до последней версии сберегательной книжки (которая была только что обновлена ​​today для обработки последних изменений в rubyzip), но все по-прежнему не работает.

Оказывается, мне нужно было удалить gem 'zip' из моего Gemfile и просто включить gem 'rubyzip' - раньше у меня были оба.

Смежные вопросы