创建Rails站点的“可播放演示”版本?

时间:2009-09-08 23:00:33

标签: ruby-on-rails web demo

在网站中很常见 - 你有一个“演示”版本,其中包含一个可以播放的数据/帖子/评论的访客帐户,并且每隔几个小时就会重置所有数据,因此用户不会向演示网站发送垃圾邮件。

我想有另一个rails环境,“mysite_demo”并使用cron作业每隔X小时调用rake来重置它的数据库,并填充种子数据。

然后它打击了我,我的应用程序,我将不得不检查我是否在“演示模式”运行: 例如,如果演示站点也有一个登录/注册页面,用户可能会注册,插入一些数据并想知道为什么他的帐户在他再次登录后被删除了..所以demosite根本不应该有一个注册选项。 / p>

所以我想我会做一个代码的“演示”分支..带有差异,只是合并更改,因为我去...听起来像是一种矫枉过正。

想法?

9 个答案:

答案 0 :(得分:1)

在我的应用程序中,我开始使用固定的演示用户,其帐户每小时重置一次。关于那个模型的东西并没有完全正确 - 如果有多个用户在同一时间点击演示,你可能会遇到一些奇怪的并发问题。如果用户正处于演示中并重置模拟账户,该怎么办?会发生什么?

我不知道这个模型是否适合您,但我最终创建了一个全新的用户帐户,并在数据库中设置了演示标志 - 我还自动将用户登录。这样用户就可以玩了只要他们愿意,我不必担心在用户演示我的应用程序时数据被删除/更改。我每晚都运行一个cron作业,删除用户设置的标志时间超过24小时。

答案 1 :(得分:0)

如果演示版本是从自己的数据库运行的,那么它与真实版本有什么不同?演示站点只是您产品的一个实例。

只需清理数据库并根据需要重新部署演示。是这么简单还是我错过了什么?

答案 2 :(得分:0)

  

然后它突然袭击了我的应用程序,我将不得不检查我是否在“演示模式”中运行(例如,您无法在演示中注册新用户)并使网站的行为相应。< / p>

如果网站在演示中,为什么用户会这么做?他们所做的任何事情都会在几个小时内被擦除,因此他们无法真正使用它。

听起来你正试图让网站陷入困境,所以他们会付钱。我不知道你的网站做了什么,但如果它是一个基于主机的服务(存储和显示信息的网页),那么数据的有限寿命应该会阻止擅自占地者。

如果您的网站做了可以在其他地方使用的东西,那么我可以看到限制它。一个示例可能是转换媒体格式或写简历的服务。如果用户可以在2小时窗口中执行一些有用的操作并随身携带,那么您可以考虑分支。

答案 3 :(得分:0)

为什么不让用户在一小时内删除帐户呢? 这允许他们看到脚本的注册过程如何工作至少一个小时,也许在注册页面上给出一条消息,该帐户仅在一小时内有效。

只是我的想法

答案 4 :(得分:0)

演示版中是否还有其他功能与生产环境不同?如果只是让用户注册的问题,您可以在生产中创建一个注册的模拟账户,并为人们提供用户名/密码。虽然根据其他业务要求,这可能不是一种选择。

答案 5 :(得分:0)

如果您愿意使用Authlogic,可以查看this,然后每隔X小时就可以查看以anonymous_开头的用户查看数据库并删除与他们相关的记录

答案 6 :(得分:0)

只需创建一个独立的演示站点,其工作方式与生产站点完全相同,但数据库每小时重置一次以清理示例数据。您需要做的唯一更改是在每个页面顶部显示一个演示的横幅。有几种方法可以做到这一点,(修改您的网站主题,或者使用框架),但基本上您只需要在一个地方而不是整个网站中更改代码。

答案 7 :(得分:0)

您可以在database.yml上设置一个新的环境演示,具有User表的只读权限和另外的demo_database。然后对您的代码进行一些检查,看看您的RAILS_ENV是否在DEMO上。

这样,您只需要使用相同的代码库,只显示您的感觉。

答案 8 :(得分:0)

您可以将其作为单独的应用程序与自己的数据库一起部署到单独的域或子域,然后检查域以确定应该有哪些选项。例如,如果您将它放在demo.example.com上,您将使用:

if request.domain =~ /demo/

如果您使用Capistrano,则可以将其设置为在部署时更新这两个应用,以便它们保持同步。