Как заставить Синатру работать с JRuby и Warbler - PullRequest
4 голосов
/ 08 мая 2011

Я использую следующий config / warble.rb в своем приложении hello-world-style:

Warbler::Config.new do |config|
  config.dirs = %w(app config tmp gems views)
  config.includes = FileList["hello.rb"]
  config.gems = ["sinatra"]
  config.gem_dependencies = true
end

Теперь, когда я запускаю jruby -S warble, это сообщение об ошибке:

warble aborted!
uninitialized constant Warbler::Jar::Pathname
org/jruby/RubyModule.java:2526:in `const_missing'

Кто-нибудь может мне помочь с этим?Приложение запускается без проблем при непосредственном выполнении, поэтому похоже, что у меня установлены все необходимые гемы.

Среда:

  • JRuby 1.6.1 (то же самое с 1.5.6)
  • Sinatra 1.2.6
  • Славка 1.3.0
  • Windows XP
  • Ubuntu 10.04.1

Ответы [ 2 ]

2 голосов
/ 09 мая 2011

Как оказалось, в warbler есть очевидная ошибка, которая не позволяет этой функции работать под jruby 1.6.1 и ruby ​​1.8.7 (не знаю о других версиях, потому что я не тестировал ее).

Посмотрите здесь для быстрого исправления:

https://github.com/padcom/warbler/commit/b4b24e17dee5bb98525203c82519a8901874ef81

2 голосов
/ 08 мая 2011

Я нашел обходной путь для этого, который работает как с ruby, так и с jruby.

Вместо указания гемов в config / warble.rb я установил гем Bundler и создал Gemfile в корневой папкемоего приложения со следующим содержимым:

source :rubygems
gem "sinatra"

С этим удаленным из файла config / warble.rb фактическое содержимое этого файла выглядит следующим образом:

Warbler::Config.new do |config|
  config.includes = FileList["hello.rb"]
end

Подводя итог:

  • драгоценные камни попадают в Gemfile
  • файлы приложений помещаются в файл config / warble.rb
...