【问题标题】:Jruby Warbler generated war on Tomcat for Sinatra -- View file not foundJruby Warbler 在 Tomcat 上为 Sinatra 生成战争 -- 找不到查看文件
【发布时间】:2012-01-17 03:52:47
【问题描述】:

我在使用 Warbler 生成的 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 文件作为某种命名资源打包在战争?

感谢您的帮助!

【问题讨论】:

    标签: ruby sinatra jruby warbler jruby-rack


    【解决方案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 :variable 声明。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      相关资源
      最近更新 更多