Jruby Warbler在Tomcat上为Sinatra生成了war——没有找到视图文件



我在使用Warbler生成WAR以部署到Tomcat时遇到了以下问题。当我运行"rake war"时,它会正确生成要部署的war文件;然而,在部署到Tomcat并导航到应用程序库后,我得到以下消息:

Errno:: enent at/micro_reg_90day/login没有这样的文件或目录-jndi:/localhost/micro_reg_90day/web - inf/视图/登录。erb文件:RubyFile.java location: initialize line: 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

如您所见,登录。Erb文件被打包成战争;但是,当尝试调用

时,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应该将. erbb文件打包为war中的某种命名资源?

谢谢你的帮助!

所以事实证明这与我在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声明

最新更新