2014-09-05 21 views
1

我有一個在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,解決了這個問題。

回答

1

我建議你在控制器或相關模型文件中定義authenticate
A Helper提供了用於呈現html的方法,如果您想使用輔助方法,則應首先使用include HelperModule

+0

'''包含HelperModule''只會產生未初始化的常量錯誤。我在app.rb中有'''註冊Padrino :: Helpers'''。 – kristianp 2014-09-08 00:22:15

0

我被把authenticate電話在auth_helper.rb文件中的助手代碼後襬脫這種錯誤的:

class MyApp < Padrino::Application 

    # Pre/Post Filters 
    before do 
    authenticate 
    @breadcrumbs = [{label: 'Home', href: '/'}] 
    end 
end 

現在我什麼也沒得到,但404在tomcat的,所以我不知道這有實際上工作。