0

単純な ruby​​ サンプルから .JAR を作成しようとしています。MRI と jRuby ではこれを問題なく実行できますが、プロジェクトをワーブルしようとすると、JAR ファイルを実行するとエラーが発生します。

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

configuration.yml ファイルはプロジェクト フォルダーにありません。編集可能にする必要があるため、JAR に含めるべきではありません。YML ファイルが JAR ファイルと同じフォルダーにあるように、パスは jar に対して相対的であることが最適です。 . では、どうすればこれを行うことができますか?

私のbin\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

私の .gemspec ファイル

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

私のconfig\warble.rb

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

「warble jar -trace」でワーブルしてもエラーは発生しません。jruby-1.7.4 と warbler-1.3.8 を使用しています。

4

1 に答える 1

0

Web上のいくつかのソリューションが示唆するように、Javaを使用せずにそれを理解しました(ただし、さえずりではありません)。

require 'yaml'

scriptpath = __FILE__[/(.*)\/.+\.jar!/]
yamlpath   = "#{$1[6..-1]}/configuration.yml"
@conf      = YAML::load_file(yamlpath)
puts @conf['username']
# => test
于 2013-08-21T16:12:52.853 に答える