Как мне структурировать приложение Rails 3 для бета-тестирования на Heroku? - PullRequest
1 голос
/ 05 апреля 2011

Я углубляюсь в Ruby on Rails и пытаюсь создать базовое веб-приложение с нуля, чтобы изучить платформу и связанные с ней технологии.Пока что он работает только на моей локальной машине, но я хотел бы развернуть его на бесплатной учетной записи Heroku, чтобы начать знакомство с развертыванием и тестированием приложения на живом сервере.Очевидно, я не хочу, чтобы приложение было общедоступным, поскольку оно далеко не готово и просто не готово для публичного использования.Я предполагаю, что я пытаюсь сделать что-то похожее на закрытое бета-тестирование, но так как это мой первый шаг, я не знаю, в каком направлении мне следует идти, чтобы достичь этого.

У меня есть учетные записи пользователей иаутентификация включена.Одна вещь, которую я мог бы сделать, это выбросить статическую целевую страницу, которая показывает, что сайт находится в разработке, и, поскольку у меня есть URL для входа, я мог бы просто добавить before_filter на все мои контроллеры, чтобы только я мог войти в систему и получить доступ ксайт, но это кажется хакерским и не позволяет мне правильно тестировать страницы, которые должны быть общедоступными (потому что они закрытые).У меня по крайней мере есть правильная идея здесь?Или моя стратегия не подходит?

Есть ли у Heroku встроенная поддержка для сохранения конфиденциальности сайтов до тех пор, пока они не станут общедоступными?

Любое направление поможет, спасибо вам большое!

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Во-первых, если вы используете один из сгенерированных поддоменов heroku (например, pretty-flower-99.heroku.com), маловероятно, что кто-нибудь наткнется на ваше приложение.Или вы можете указать очень скрытый домен / поддомен самостоятельно.

После этого проще всего, вероятно, добавить базовую аутентификацию http в контроллер приложения и запустить ее в before_filter.Примерно так:

class ApplicationController < ActionController::Base
before_filter :beta_login_required

protected

    def beta_login_required
      authenticate_or_request_with_http_basic do |username, password|
        username == "foo" && password == "bar"
      end
    end

Это откроет вам диалоговое окно для ввода имени пользователя и пароля в браузере старой школы.Если есть какие-то места, которые вы хотите пропустить, просто запустите skip_before_filter в этом контроллере.

1 голос
/ 24 февраля 2015

Если в какой-то момент вы хотите разрешить нескольким пользователям бета-тестирование без принудительного применения http базовой аутентификации, вы можете установить атрибут статуса в модели User. Таким образом, вы можете по-прежнему подписывать людей, а затем через консоль Heroku или через собственную страницу администратора подтвердить их.

Новая функция Rails Enums делает это действительно простым.

Создать миграцию:

rails g migration AddStatusToUsers users:integer

Включите статус enum и действие перед:

class User
  enum status: [:pending, :live]
end

class ApplicationController
  before_action :must_be_approved_beta_user

  def must_be_approved_beta_user
    redirect_to home_path unless current_user.live?
  end
end

Жить? метод предоставляется вам бесплатно с Enums. http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...