Generowanie kodów QR w Ruby on Rails

W ostatnim projekcie, który tworzyłem, spotkałem się z koniecznością generowania kodów QR. Okazało się to dużo łatwiejsze niż początkowo zakładałem. Rozwiązaniem mojego problemu okazała się biblioteka rqrcode dla Ruby. Jak jednak zintegrować ją z aplikacją w Roby on Rails i wyświetlić kod QR?

Zakładam, że mamy już działającą aplikację i brakuje w niej jedynie generowania kodów QR. Przystępujemy zatem do pracy, uzupełniamy plik Gemfile o:

gem 'rqrcode', '~> 1.1', '>= 1.1.2'

Następnie instalujemy brakujące biblioteki pojeceniem:

bundle install

W tej chwili mamy już wszystko czego potrzebujemy do generowania kodów QR w aplikacji.

Sam kod generujący kody QR w mojej aplikacji, wyniosłem do katalogu z bibliotekami. Utworzyłem zatem plik „libs/qrcode/qrcode.rb” o treści:

require 'rqrcode'

class Qrcode
  def generate(message)
    return RQRCode::QRCode.new(message).as_svg(
      offset: 0,
      color: '000',
      shape_rendering: 'crispEdges',
      module_size: 12,
      standalone: true
    )
  end
end

Aby biblioteka do generowania kodów QR była dostępna w całej aplikacji, musimy jeszcze zadbać o załadowanie jej podczas startu, w tym celu, do pliku applications.rb dopisujemy kod:

config.eager_load_paths << "#{Rails.root}/lib/qrcode"

Aby wyświetlić kod QR w widoku, dodajemy w kontrolerze:

qrcode = Qrcode.new
@code = qrcode.generate("Treść")

A następnie, już w samym widoku:

<%= @code.html_safe %>

W efekcie – otrzymamy kod QR wyświetlony na stronie internetowej zbudowanej w oparciu o Ruby on Rails.