我在我的 hello-world-style 应用程序中使用以下 config/warble.rb:

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'

任何人都可以帮我解决吗?该应用程序在直接执行时运行没有问题,因此看起来我已经安装了所有必需的 gem。

环境:
  • JRuby 1.6.1(与 1.5.6 相同)
  • 西纳特拉 1.2.6
  • 莺 1.3.0
  • Windows XP
  • Ubuntu 10.04.1
  • 最佳答案

    我找到了一个适用于 ruby​​ 和 jruby 的解决方法。

    我没有在 config/warble.rb 中指定 gems,而是安装了 Bundler gem 并在我的应用程序的根文件夹中创建了 Gemfile,其内容如下:

    source :rubygems
    gem "sinatra"
    

    从 config/warble.rb 文件中删除该文件后,该文件的实际内容如下所示:
    Warbler::Config.new do |config|
      config.includes = FileList["hello.rb"]
    end
    

    总结一下:
  • gems 进入 Gemfile
  • 应用程序文件进入 config/warble.rb 文件
  • 关于sinatra - 让 Sinatra 与 JRuby 和 Warbler 一起工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5924324/

    10-10 14:01