2014-09-05 6 views
1

У меня есть приложение padrino, разработанное с использованием jruby on linux, которое отлично работает. Однако, когда я развернуть его Tomcat на Windows 7 с помощью камышевки, я получаю следующее сообщение об ошибке при обращении к странице:Приложение Padrino не загружает пользовательские помощники при развертывании в tomcat windows 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.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 

Обновление: Я никогда не работал, почему я не мог получить кот работать с моим приложением, и он не был воспроизведен человеком из Padrino сообщества. Я переехал в Джетти, который решил проблему.

ответ

1

Я предлагаю вам определить authenticate в контроллере или связанном файле модели.
Метод Helper предназначен для рендеринга html, и если вы хотите использовать вспомогательный метод, сначала вы должны include HelperModule.

+0

'' 'include HelperModule''' просто производит неинициализированную постоянную ошибку. У меня есть '' 'register Padrino :: Helpers''' в app.rb. – kristianp

0

Я избавилась от этой ошибки, поставив authenticate вызова после хелперов кода в файле auth_helper.rb:

class MyApp < Padrino::Application 

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

Теперь я не получаю ничего, кроме 404-й в коте, так что я не уверен, что это имеет фактически работал.

 Смежные вопросы

  • Нет связанных вопросов^_^