Барби не может генерировать некоторые QR-коды - Nil.rszf

StackOverflow https://stackoverflow.com/questions/3797531

  •  05-10-2019
  •  | 
  •  

Вопрос

В IRB.

data = "2 1058 657682" barcode = barby :: qrcode.new (data) file.open ('barcode.png', 'w +') {| f | f.write barcode.to_png (: высота => 100,: margin => 25,: xdim => 100)}

Генерирует ошибку:

ActionView::TemplateError (/Library/Ruby/Gems/1.8/gems/barby-    0.4.0/vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:296:in `map_data': You have a nil     object when you didn't expect it!
The error occurred while evaluating nil.rszf) on line <a href="/toretore/barby/issues/#issue/1" class="internal">#1</a> of app/views/profile/ticket.rpdf:
1: pdf.font_families["Helvetica"] =
2: {
3:   "b"   => "Helvetica-Bold",
4:   "i"   => "Helvetica-Oblique"    
lib/pdf_render.rb:46:in `pdf'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:291:in `each'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:291:in `map_data'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:287:in `step'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:287:in `map_data'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:172:in `make_impl'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:196:in `get_best_mask_pattern'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:195:in `each'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:195:in `get_best_mask_pattern'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:145:in `make'
barby (0.4.0) vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb:85:in `initialize'
barby (0.4.0) lib/barby/barcode/qr_code.rb:94:in `new'
barby (0.4.0) lib/barby/barcode/qr_code.rb:94:in `rqrcode'
barby (0.4.0) lib/barby/barcode/qr_code.rb:55:in `encoding'
barby (0.4.0) lib/barby/outputter.rb:86:in `encoding'
barby (0.4.0) lib/barby/outputter/png_outputter.rb:67:in `height'
barby (0.4.0) lib/barby/outputter.rb:116:in `send'
barby (0.4.0) lib/barby/outputter.rb:116:in `with_options'
barby (0.4.0) lib/barby/outputter.rb:114:in `each'
barby (0.4.0) lib/barby/outputter.rb:114:in `inject'
barby (0.4.0) lib/barby/outputter.rb:114:in `with_options'
barby (0.4.0) lib/barby/outputter/png_outputter.rb:18:in `to_canvas'
barby (0.4.0) lib/barby/outputter/png_outputter.rb:58:in `to_png'
barby (0.4.0) lib/barby/barcode.rb:70:in `send'
barby (0.4.0) lib/barby/barcode.rb:70:in `method_missing'
(eval):107:in `pdf'
(eval):88:in `each'
(eval):88:in `pdf'
lib/pdf_render.rb:18:in `eval'
lib/pdf_render.rb:46:in `pdf'
lib/pdf_render.rb:18:in `render'
...

Принимая во внимание, что если я изменим данные в «2 1058 657681» (замените окончательный «2» для «1»), он работает нормально.

Драгоценные камни:

Barby 0.4.0 PNG 1.1.0 (1.2.0 продолжал получать строку :: CompilationError)

Это было полезно?

Решение 3

Ваше здоровье! Похоже, RQRCode и в свою очередь, Barby был обновлен, чтобы исправить эту ошибку.Toretore / Barby

Другие советы

В очереди 295 барбы-u003Cversion> /vendor/rqrcode/lib/rqrcode/qrcode/qr_code.rb, изменение

if byte_index &lt; data.size

в

if byte_index &lt; data.size &amp;&amp; ! data[byte_index].nil?

Повеселись!

Пробовал с Barby 0.4.2, а также не удается. Проблема находится в библиотеке RQRCode, которая все еще находится в версии 0.3.2.

Вы можете попробовать падать: параметр размера, чтобы переопределить динамически рассчитанный, но в конечном итоге он в конечном итоге не удастся в другую строку.

Единственный способ, которым я обнаружил, что обходит, проблема заключалась в том, чтобы попробовать на одном уровне и попробовать другую, если это не удается.

begin
  student_barcode = Barby::QrCode.new(content, :level => :q)
rescue NoMethodError
  student_barcode = Barby::QrCode.new(content, :level => :m)
end

Ошибка, сгенерированная на одном уровне, не произошла в другом .. странно, но работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top