Reputation: 735
I'm running into the following issue with a WAR I am generating using Warbler to deploy to Tomcat. When I run 'rake war' it correctly generates the war file to deploy; however, upon deploying to Tomcat and navigating to the application base, I get the following message:
Errno::ENOENT at /micro_reg_90day/login No such file or directory - jndi:/localhost/micro_reg_90day/WEB-INF/views/login.erb file: RubyFile.java location: initialize line: 464
Within the browser. The strange thing is that when I go to the expanded webapp within the file system--I am seeing this within the webapp/WEB-INF/views directory:
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
As you can see, the login.erb file is being packaged into the war; however, not being found by JRuby when trying to call
render :erb, :login
Within the Sinatra app. The following is my 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
the only thing I am noticing is that the path that Tomcat is telling me is not found is prefixed by a jndi: -- Would this indicate that warbler is suppose to package the .erb files as some sort of named resource within the war?
Thanks for the help!
Upvotes: 2
Views: 1073
Reputation: 735
So it turns out this was related to the config.ru file that I was using within my sinatra app. The following config.ru file worked:
require 'rubygems'
load File.join(File.dirname(__FILE__), 'app.rb')
set :run, false
set :public_folder, './public'
set :views, './views'
run App
I previously did not have the set :variable declarations.
Upvotes: 1