Барби не смог сгенерировать несколько QR-кодов - nil.rszf - PullRequest
1 голос
/ 26 сентября 2010

In irb

data = "2 1058 657682" штрих-код = Barby :: QrCode.new (data) File.open ('barcode.png', 'w +') {| F |f.write barcode.to_png (: height => 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»), то все будет отлично.

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

Барби 0,4.0 PNG 1,1,0(1.2.0 продолжал получать String :: CompilationError)

Ответы [ 3 ]

2 голосов
/ 01 февраля 2011

В строке 295 строки barby- / 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?

Веселись!

0 голосов
/ 08 февраля 2011

Ура!Похоже, rqrcode и, в свою очередь, Барби были обновлены, чтобы исправить эту ошибку. toretore / Barby

0 голосов
/ 02 ноября 2010

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

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

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

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

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

...