2011-12-09 58 views
2

我遇到了下面的WAR問題,我使用Warbler將其部署到Tomcat。當我運行'rake war'時,它會正確生成要部署的war文件;然而,在部署到Tomcat並導航到應用基礎,我得到以下信息:在/ micro_reg_90dayJruby Warbler在Tomcat上爲Sinatra生成了戰爭 - 查看文件未找到

變量Errno :: ENOENT /登入沒有這樣的文件或目錄 - JNDI:/本地主機/ micro_reg_90day/WEB- INF/views/login.erb文件: RubyFile.java位置:初始化行:464

在瀏覽器中。奇怪的是,當我去擴展Web應用程序的文件系統中 - 我的web應用/ 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文件正在打包成戰爭;但是,JRuby在嘗試撥打電話時未找到它

render :erb, :login 

在Sinatra應用程序中。以下是我的配置/ 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前綴: - 這是否表明,鶯是假設將.erb文件打包爲戰爭中的某種指定資源?

感謝您的幫助!

回答

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 

我以前沒有設置:變量聲明。