Jruby Warbler создал войну на Tomcat для Sinatra - файл не найден - PullRequest
2 голосов
/ 10 декабря 2011

Я столкнулся со следующей проблемой с WAR, которую я генерирую, используя Warbler для развертывания в Tomcat. Когда я запускаю 'rake war', он правильно генерирует файл войны для развертывания; однако после развертывания в Tomcat и перехода к базе приложений я получаю следующее сообщение:

Errno :: ENOENT at / micro_reg_90day / login Нет такого файла или каталога - jndi: /localhost/micro_reg_90day/WEB-INF/views/login.erb file: Местоположение RubyFile.java: строка инициализации: 464

В браузере. Странно то, что когда я захожу в расширенное веб-приложение в файловой системе - я вижу это в каталоге 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

В приложении Синатра. Вот мой конфиг / 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 как некий именованный ресурс внутри война?

Спасибо за помощь!

1 Ответ

1 голос
/ 11 декабря 2011

Оказывается, это было связано с файлом config.ru, который я использовал в своем приложении sinatra.Сработал следующий файл config.ru:

require 'rubygems'

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

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

run App

У меня ранее не было набора: объявления переменных.

...