我有一個在linux上使用jruby開發的padrino應用程序,該應用程序正常工作。然而,當我使用它鶯部署到Tomcat在Windows 7上,訪問頁面時,我得到了以下錯誤:Padrino應用程序在部署到Tomcat窗口時不加載自定義幫助程序7
undefined local variable or method `authenticate' for #<MyApp:0x480ebb>
file: app.rb
C:/Program Files (x86)/Apache Software Foundation/Tomcat 8.0/webapps/theapp/WEB-INF/app/app.rb in MyApp
authenticate
C:/Program Files (x86)/Apache Software Foundation/Tomcat 8.0/webapps/theapp/WEB-INF/gems/gems/padrino-core-0.12.2/lib/padrino-core/application/routing.rb in filter!
base.filters[type].each { |block| instance_eval(&block) }
下面是在app/app.rb出錯行:
class MyApp < Padrino::Application
# lots of standard code
register Padrino::Helpers
before do
authenticate
end
end
而且這是幫助程序文件:app/helpers/auth_helper.rb。 (最初幫手是用MyApp.helpers do
聲明的,我試着將它改成模塊,但沒有運氣)。
class MyApp
module AuthHelper
def logged_in?
session[:user].present?
end
def authenticate
if !logged_in?
# Allow login page to be seen
allowed_urls = ['/','/login', '/account/activate', '/account/register']
return if allowed_urls.include? request.path_info
end
if logged_in?
@user = session[:user]
else
redirect to('/login')
end
end
def logout
@user = nil
session.clear if logged_in?
redirect to('/login')
end
end
helpers AuthHelper
end
更新:我從來沒有工作,爲什麼我不能得到的Tomcat與我的應用程序工作,它不是從padrino社區的人複製。我搬到了Jetty,解決了這個問題。
'''包含HelperModule''只會產生未初始化的常量錯誤。我在app.rb中有'''註冊Padrino :: Helpers'''。 – kristianp 2014-09-08 00:22:15