2009-09-08 7 views
2

Это довольно распространено в сайтах - у вас есть «демонстрационная» версия с учетной записью гостя, полной данных/сообщений/комментариев, с которыми вы можете играть, и все данные сбрасываются каждые несколько часов, чтобы пользователи не спамеровали демонстрационный сайт.Создать «воспроизводимую демонстрационную версию» сайта Rails?

Я думал, что у меня есть другая среда рельсов «mysite_demo» и используйте задание cron, чтобы вызвать rake, чтобы сбросить базу данных каждые X часов и заполнить данные семени.

Тогда мне удалось, что во всем моем приложении мне нужно будет проверить, работает ли я в «демо-режиме»: Например, если на демо-сайте есть страница входа/регистрации, пользователь может зарегистрировать, вставить некоторые данные и задаться вопросом, почему его учетная запись удаляется после повторного входа в систему. Поэтому у demosite не должно быть параметра регистрации вообще.

Так что я думал, что сделаю «демонстрационную» ветвь кода .. с разницей и просто смените изменения, поскольку я иду ... звучит как перебор.

идеи?

ответ

1

В моем приложении я начал с фиксированного демо-пользователя с учетной записью, которая сбрасывается каждый час. Что-то в этой модели не совсем верно: если бы несколько пользователей попали в демонстрацию одновременно, вы могли столкнуться с некоторыми странными проблемами параллелизма. А что, если пользователь находится в середине демонстрации и ваш сброс демо-счета? Что происходит?

Я не знаю, работает ли эта модель для вас, но я создал совершенно новую учетную запись пользователя с установленным в базе данных демо-флагом - я также автоматически регистрирую пользователя. Таким образом, пользователь может играть вокруг до тех пор, как им нравится, и мне не нужно беспокоиться о том, что данные удаляются/меняются, когда пользователь демонтирует мое приложение. Я запускаю работу cron каждую ночь, которая удаляет пользователей с установленным демо-флагом, который старше 24 часов.

0

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

Просто очистите БД и передислоцируйте демонстрацию по мере необходимости. Это просто так просто или я чего-то не хватает?

+0

Некоторая функциональность отсутствует на демо-сайте, например, регистрация нового пользователя .. так как я написал, не могу просто развернуть как есть, нужно создать свою собственную ветку или проверить код, если он запускает производство или демонстрацию. не уверены, хороши ли какие-либо варианты, поэтому вопрос :) – amitkaz

0

После этого меня поразило, что по всему моему приложению мне нужно будет проверить, работает ли я в «демо-режиме» (например, вы не можете зарегистрировать нового пользователя в демо) и заставить сайт вести себя соответственно.

Если сайт находится в демонстрации, почему это важно, что делают пользователи? Все, что они делают, будет вытерто через несколько часов, поэтому они не смогут реально работать с ним.

Похоже, вы пытаетесь помешать сайту, чтобы они заплатили. Я не знаю, что делает ваш сайт, но если его служба на основе хоста (веб-страница, которая хранит информацию &), то ограниченный срок службы данных должен удерживать скваттеров.

Если ваш сайт делает что-то, что можно использовать в другом месте, то я могу его ограничить. Примером может служить служба, которая преобразует медиаформаты или записывает резюме. Если пользователь может сделать что-то полезное в 2-часовом окне и уйти с ним, то вы можете рассмотреть ветвление.

+0

нет, не для гандикапа - единственное, что я хочу сказать, это то, что пользователь, вводящий демо, увидит опцию «register», на самом деле зарегистрируется, а затем задается вопросом, где все его данные уходят через час .. поэтому я хотел отключить регистрацию учетных записей в демо, просто позвольте им иметь гостевую учетную запись со всеми данными, чтобы играть с – amitkaz

0

Почему бы не позволить пользователю делать учетную запись, даже если она удалена через час?
Это позволяет им увидеть, как процесс регистрации скрипта работает в течение как минимум часа, возможно, на странице регистрации появится сообщение о том, что учетная запись действительна только в течение часа.

Просто мои мысли

+0

Это вариант, но с другой стороны мне придется вставить перейдите на страницу регистрации, чтобы показать сообщение .. так что это та же проблема :) – amitkaz

0

Есть ли другие функции, которые отличаются в демо-версии, чем в производственной среде? Если это просто вопрос регистрации пользователя, вы можете просто создать зарегистрированную демо-учетную запись на производстве и выдать имя пользователя/пароль для людей. Хотя это может и не быть вариантом в зависимости от других бизнес-требований.

+0

демо должно иметь ту же самую функциональность, просто засеяли данными, поэтому пользователю не нужно будет создавать все, чтобы увидеть, как сайт выглядит «полным», , – amitkaz

+0

Я думаю, что немного рискованно запускать задачи на производстве, которые уничтожают много данных .. другой db безопаснее. Кроме того, меньше загрязнений данных – amitkaz

0

Если вы хотите использовать Authlogic, вы можете взглянуть на this, то через каждые X часов вы можете просмотреть базу данных для пользователей, которые начинаются с anonymous_ и удалять записи, связанные с ними.

+0

, поскольку я ответил Райану, он не чувствует себя в безопасности для массового создания/удаления данных, как это, тем более, что это в законных учетных записях пользователей. Я думаю, что это просто говорит Мерфи: «Посмотрите здесь - место когда все это может пойти ужасно неправильно! " :) – amitkaz

+0

Многие люди используют этот метод, я уверен, что это было продумано до его исполнения. – Garrett

0

Просто создайте отдельный демонстрационный сайт, который работает точно так же, как и производственный, но DB сбрасывается один раз в час, чтобы очистить данные примера. Единственное изменение, которое вам нужно сделать, - это баннер в верхней части каждой страницы, где говорится о демо. Существует несколько способов сделать это (изменить тему своего сайта или, возможно, использовать фреймы), но в основном вам нужно только изменить код в одном месте, а не на всем сайте.

0

Вы можете настроить новую демонстрацию среды на свой database.yml с привилегиями только для чтения для таблицы User и дополнительной базой demo_database. Затем поместите несколько проверок на свой код, чтобы узнать, находится ли ваш RAILS_ENV в DEMO.

Таким образом, вам нужно работать только с одной и той же кодовой базой и просто показывать все, что вам нравится.

0

Вы можете развернуть его как отдельное приложение со своей собственной базой данных в отдельный домен или поддомен, а затем проверить домен, чтобы решить, какие параметры должны быть доступны. Например, если вы положите его на demo.example.com вы будете использовать:

if request.domain =~ /demo/ 

Если вы используете Capistrano вы можете настроить его, чтобы обновить оба приложения при развертывании, так что они находятся в синхронизации.

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

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