рельсы омниаут и базовая URI проблема просмотра - PullRequest
0 голосов
/ 21 июня 2011

При развертывании моего приложения rails в рабочей среде я установил: RailsBaseURI / my_app, чтобы в качестве местоположения приложения rails я мог иметь: mydomain.com/my_app.Я установил omniauth в качестве провайдера для аутентификации.проблема заключается в том, что при вызове действия регистрации моего контроллера сеанса я получаю следующую ошибку:

ActionView::MissingTemplate (Missing template /m_app/services/signup with 
{:handlers=>[:rjs, :rhtml, :rxml, :builder, :erb], :locale=>[:en, :en], 
:formats=>[:html]} in view paths
"/home/webadmin/mydomain.com/my_app/releases/20110621181033/app/views", 
"/home/webadmin/mydomain.com/my_app/releases/20110621181033", "/"):
          app/controllers/services_controller.rb:128:in `create'

Строка 128 services_controller выглядит следующим образом:

render signup_services_path

Мои маршруты дляСервисный контроллер выглядит так:

  resources :services, :only => [:index, :create, :destroy] do
    collection do
      get 'signin'
      get 'signout'
      get 'signup'
      post 'newaccount'
      get 'failure'
    end
  end

1 Ответ

1 голос
/ 09 февраля 2012

Не видя всего вашего контроллера, я не могу быть уверен, но недавно я столкнулся с подобной проблемой с OmniAuth. Вот две вещи, которые работали для меня:

Описание:

  1. Существует виртуальный хост для internalserver.com.
  2. На виртуальном хосте развернуты два приложения следующим образом:

    #/etc/httpd/conf.d/ssl.conf
    <VirtualHost _default_:443>
        ServerName internalserver.com:443
        DocumentRoot /var/www/html/sites
        <Directory /var/www/html/sites>
            AllowOverride all
            Options -Multiviews
        </Directory>
    
        # Stable App
        <Directory /var/www/html/sites/stable>
            RailsBaseURI /stable
            RackBaseURI /stable
            Options -MultiViews
            RailsEnv production
        </Directory>
    
        # Beta App
        <Directory /var/www/html/sites/beta>
            RailsBaseURI /beta
            RackBaseURI /beta
            Options -MultiViews
            RailsEnv development
        </Directory>
    
        # SSLStuff
            ...
    </VirtualHost>
    
  3. Выход ls -al /var/www/html/sites:

    drwxr-xr-x. 14 apache apache   4096 Feb  6 19:05 app
    drwxr-xr-x. 14 apache apache   4096 Feb  9 18:15 app_beta
    lrwxrwxrwx.  1 root   root       32 Feb  6 00:00 beta -> /var/www/html/sites/app_beta/public
    lrwxrwxrwx.  1 root   root       32 Feb  6 00:00 stable -> /var/www/html/sites/app/public
    

Два шага, которые мне пришлось предпринять, чтобы настроить OmniAuth для правильной работы:

  1. Настройка OmniAuth.config.full_host должна быть установлена ​​с подкаталогом:

    #config/initializers/omniauth.rb
    Rails.application.config.middleware.use OmniAuth::Builder do
        ...
    end
    
    # Add this line
    OmniAuth.config.full_host = "https://internalserver.com/beta"
    
    # You could also do something dynamic like:
    # OmniAuth.config.full_host = "#{Settings.host.base_url.gsub(/\/$/, '')}"
    
  2. По какой-то причине названные маршруты не работали при настройке ссылок входа / выхода. Мне пришлось жестко кодировать <a href="/auth/<my-provider>">Click here to log in</a> вместо использования <%= link_to "Click here to log in", signin_path %>. Я не знаю, почему это так, но вы можете попробовать это.

...