让Sinatra在JRuby和Warbler下工作

4
我正在使用以下配置文件/warble.rb来构建我的hello-world风格的应用程序:

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'

有人能帮我解决这个问题吗?当直接执行应用程序时,它可以正常运行,所以看起来我已经安装了所有必需的gems。

环境:

  • JRuby 1.6.1(与1.5.6相同)
  • Sinatra 1.2.6
  • Warbler 1.3.0
  • Windows XP
  • Ubuntu 10.04.1
2个回答

2

2
我找到了一个解决方法,可以在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

总结一下:

  • 宝石放入Gemfile文件中
  • 应用程序文件放入config/warble.rb文件中

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接