2

Warblerを使用してTomcatにデプロイするために生成しているWARで次の問題が発生しています。'rake war'を実行すると、デプロイするwarファイルが正しく生成されます。ただし、Tomcatにデプロイしてアプリケーションベースに移動すると、次のメッセージが表示されます。

Errno :: ENOENT at / micro_reg_90day / loginそのようなファイルまたはディレクトリはありません-jndi:/localhost/micro_reg_90day/WEB-INF/views/login.erbファイル:RubyFile.java場所:初期化行:464

ブラウザ内。奇妙なことに、ファイルシステム内の展開されたwebappに移動すると、webapp / WEB-INF/viewsディレクトリ内にこれが表示されます。

MacBook-Pro:views ejlevin1$ ls -l
-rw-r--r--  1 ejlevin1  wheel    740 Dec  9 16:20 login.erb
-rw-r--r--  1 ejlevin1  wheel   1309 Dec  9 16:20 next_steps.erb
-rw-r--r--  1 ejlevin1  wheel   8957 Dec  9 16:20 ninety_day.erb
-rw-r--r--  1 ejlevin1  wheel  10237 Dec  9 16:20 try_it_tuesdays.erb

ご覧のとおり、login.erbファイルはwarにパッケージ化されています。ただし、JRubyが電話をかけようとしても見つからない

render :erb, :login

Sinatraアプリ内。以下は私のconfig/warbler.rbです。

Warbler::Config.new do |config|
  config.dirs += ['views']
  config.includes = FileList["app.rb","init.rb"]
  config.gem_dependencies = true
  config.webxml.rack.env = ENV['RACK_ENV'].nil? || ENV['RACK_ENV'] =='' ? 'development' : ENV['RACK_ENV']
  config.webxml.jruby.compat.version = "1.9"
end

私が気付いている唯一のことは、Tomcatが私に言っているパスが見つからないということは、接頭辞jndiが付いていることです:-これは、warblerが.erbファイルを戦争内のある種の名前付きリソースとしてパッケージ化することを想定していることを示しますか?

助けてくれてありがとう!

4

1 に答える 1

1

したがって、これは、sinatraアプリ内で使用していたconfig.ruファイルに関連していることがわかりました。次のconfig.ruファイルが機能しました。

require 'rubygems'

load File.join(File.dirname(__FILE__), 'app.rb')

set :run, false
set :public_folder, './public'
set :views, './views'

run App

以前は、set:variable宣言がありませんでした。

于 2011-12-10T20:35:32.843 に答える