Как использовать креветки на маглев - PullRequest
0 голосов
/ 09 ноября 2011

Будучи новичком в maglev, я хотел бы начать с небольшого, но все же полезного примера.Поэтому я решил начать перемещать классы ruby, которые я использую для генерации своих счетов в maglev.Однако я столкнулся с неожиданной проблемой, используя (превосходную) PDF-библиотеку креветок.

Находясь на rvm, я сгенерировал gemset для приложения, которое настроено в .rvmrc для каталога invoice.Когда я перехожу на него, он привыкает:

Using /Users/patru/.rvm/gems/maglev-head with gemset invoice

Когда я устанавливаю креветки, все начинается нормально, кажется, что гем установлен, и создаются документы.Тем не менее, проблема начинается, когда rdoc должен быть создан, предоставленная maglev команда gem дает мне

 gem install prawn
[INFO] The MagLev team publishes customized versions of some gems.
...
Successfully installed prawn-0.12.0
1 gem installed
Installing ri documentation for prawn-0.12.0...


RDoc failure in lib/prawn/images/jpg.rb at or around line 20 column 26

Before reporting this, could you check that the file
you're documenting compiles cleanly--RDoc is not a
full Ruby parser, and gets confused easily if fed
invalid programs.

The internal error was:

ERROR:  While generating documentation for prawn-0.12.0
... MESSAGE:   global $@ is a read-only variable
... RDOC args: --ri --op /Users/patru/.rvm/gems/maglev-head@invoice/doc/prawn-0.12.0/ri --title Prawn Documentation --main README -q lib README.md LICENSE COPYING GPLv2 GPLv3 --title prawn-0.12.0 Documentation --quiet
a RubySystemExit occurred (error 2752)

Нет ничего сложного, чтобы жить без документации, это достаточно хорошо, но что-то еще идет не так, как говорит список драгоценных камней

Ascii85 (1.0.1)
bundler (1.0.21)
erector (0.8.3)
pdf-reader (0.10.1)
polyglot (0.3.3)
prawn (0.12.0)
rake (0.9.2)
treetop (1.4.10)
ttfunk (1.0.3)

так что все вроде бы хорошо, но если я сделаю

require 'ruby gems'
require 'prawn'

в irb (который отлично работает на моем ри-1.8.7), я получу странный

NoMethodError: NoMethodError: undefined method `ruby_18' for 
from /Users/patru/.rvm/gems/maglev-head@invoice/gems/prawn-0.12.0/lib/prawn/core/object_store.rb:246:in `__compileClass'
from /Users/patru/.rvm/gems/maglev-head@invoice/gems/prawn-0.12.0/lib/prawn/core/object_store.rb:14:in `__compileClass'
from /Users/patru/.rvm/gems/maglev-head@invoice/gems/prawn-0.12.0/lib/prawn/core/object_store.rb:13:in `__compileClass'
from /Users/patru/.rvm/gems/maglev-head@invoice/gems/prawn-0.12.0/lib/prawn/core/object_store.rb:12
from /Users/patru/.rvm/rubies/maglev-head/src/kernel/bootstrap/Kernel.rb:831:in `gem_original_require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:57:in `require'
from /Users/patru/.rvm/gems/maglev-head@invoice/gems/prawn-0.12.0/lib/prawn/core.rb:78
from /Users/patru/.rvm/rubies/maglev-head/src/kernel/bootstrap/Kernel.rb:831:in `gem_original_require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:57:in `require'
from /Users/patru/.rvm/gems/maglev-head@invoice/gems/prawn-0.12.0/lib/prawn.rb:11
from /Users/patru/.rvm/rubies/maglev-head/src/kernel/bootstrap/Kernel.rb:831:in `gem_original_require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:59:in `require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:57:in `require'
from /Users/patru/.rvm/rubies/maglev-head/src/kernel/bootstrap/Kernel.rb:831:in `gem_original_require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:57:in `require'
from (irb):5:in `__compileEval'
from (irb):7:in `__compileEval'
from /Users/patru/.rvm/rubies/maglev-head/src/kernel/bootstrap/Kernel.rb:394:in `eval'
from /Users/patru/.rvm/rubies/maglev-head/lib/ruby/1.8/irb.rb:159:in `eval_input'
...

Я, вероятно, здесь упускаю что-то очевидное.Достаточно сказать, что гем 'erector', который я также установил (см. Список драгоценных камней выше), может потребоваться без проблем, поэтому я не делаю все неправильно; -)

1 Ответ

0 голосов
/ 09 ноября 2011

Кажется, это взаимодействие с IRB. Я могу запустить следующий скрипт, и он создает правильный файл PDF:

require 'rubygems'
require 'prawn'

Prawn::Document.generate('hello.pdf') do
  text "Hello! from #{RUBY_ENGINE}"
end

Возможно, лучше всего подавать отчеты об ошибках на https://github.com/maglev/maglev/issues

...