我正在使用Warble来生成一个WAR,以便部署到Tomcat。当我运行'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文件被打包到战争中;但是,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文件打包为某种命名资源战?
感谢您的帮助!
答案 0 :(得分: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:变量声明。