警告一个具有YAML依赖关系的简单ruby示例



我试图从一个简单的ruby示例中制作一个.JAR。在MRI和jRuby中,我可以毫无问题地运行它,但当我试图警告项目时,我在运行JAR文件时会出错。

Errno::ENOENT: No such file or directory - configuration.yml

configuration.yml文件不在项目文件夹中,因为它需要是可编辑的,所以不应该在包含的JAR中,最好路径是相对于JAR的,这样yml文件就和JAR文件在同一个文件夹中。那么我该怎么做呢?

我的垃圾箱\sample.rb

require 'yaml'
@conf = YAML::load_file "c:/test/configuration.yml"
#@conf = YAML::load_file "c:\test\configuration.yml"
puts @conf['username']

我的c:\test\configuration.yml

username: test

我的.gmspec文件

Gem::Specification.new do |spec|
  spec.require_paths << '.'
}

我的配置\warble.rb

Warbler::Config.new do |config|
  config.jar_name = "sample"
end

我用"warble jar-trace"进行了警告,没有得到任何错误我使用jruby-1.7.4和warbler-1.3.8。

正如网上一些解决方案所建议的那样,在不使用java的情况下就解决了这个问题(但不适用于warble)。

require 'yaml'
scriptpath = __FILE__[/(.*)/.+.jar!/]
yamlpath   = "#{$1[6..-1]}/configuration.yml"
@conf      = YAML::load_file(yamlpath)
puts @conf['username']
# => test

最新更新