2009-09-08 38 views
2

這在網站中很常見 - 你有一個「演示」版本,其中有一個客人帳戶充滿了可以玩的數據/帖子/評論,並且所有數據每隔幾小時重置一次,因此用戶不會向演示網站發送垃圾郵件。創建Rails站點的「可玩演示」版本?

我認爲有另一個rails環境「mysite_demo」,並使用一個cron作業調用rake來每隔X小時重置它的數據庫,並填充種子數據。

然後打我,都在我的應用我得查,如果我在「演示模式」運行: 例如,如果演示現場有一個登錄/註冊過網頁,用戶可能註冊,插入一些數據,並想知道爲什麼他的賬戶在他再次登錄後被刪除..所以demosite根本不應該有註冊選項。

所以我想我會做一個代碼的「演示」分支..有區別,只是合併變化,因爲我去...聽起來像一個矯枉過正。

想法?

回答

1

在我的應用程序中,我從一個固定的演示用戶開始,每個小時都重置一個帳戶。關於該模型的某些內容並不完全正確 - 如果有多個用戶在同一時間點擊演示,您可能會遇到一些奇怪的併發問題。如果用戶處於演示中,並重置了模擬帳戶,該怎麼辦?怎麼了?

我不知道這個模型是否適合你,但我最終創建了一個全新的用戶帳戶,並在數據庫中設置了一個演示標誌 - 我也自動登錄該用戶。這樣用戶就可以玩只要他們喜歡,我不必擔心數據被刪除/更改,而用戶演示我的應用程序。我每晚都會運行一個cron作業,刪除24小時以上的演示標誌設置的用戶。

0

如果演示版本是從自己的數據庫運行的,它與真實的東西有什麼不同?演示網站只是您產品的一個實例。

只需清理數據庫並根據需要重新部署演示。這是簡單的還是我錯過了一些東西?

+0

演示網站中缺少一些功能,如註冊新用戶......所以,就像我寫的,不能按原樣部署,需要將其設置爲自己的分支,或者讓代碼檢查它是否正在運行生產或演示。不知道如果任何選項是好的,因此問題:) – amitkaz 2009-09-08 23:11:30

0

然後打我,都在我的應用我得查,如果我在「演示模式」運行(例如,你不能註冊在演示一個新的用戶),使網站的行爲因此。

如果網站在演示中,爲什麼用戶在做什麼?他們所做的任何事情都會在幾個小時內消失,所以他們將無法真正做到。

這聽起來像你試圖阻礙網站,所以他們會支付。我不知道你的網站是做什麼的,但是如果它是一個基於主機的服務(存儲&顯示信息的網頁),那麼數據的有限壽命應該阻止寮屋。

如果您的網站做了一些可以在其他地方使用的東西,那麼我可以看到它的限制。一個例子可能是一種轉換媒體格式的服務,或者寫入恢復。如果用戶可以在2小時內做一些有用的事情,然後走開,那麼你可能會考慮分支。

+0

不,不讓步 - 我唯一要做的就是進入演示的用戶將看到一個「註冊」選項,實際上將註冊,然後想知道在哪裏他的所有數據都是在一小時後纔會發生的..所以我想在演示中禁用註冊帳戶,只需讓他們有一個帶有所有數據的訪客帳戶就可以玩 – amitkaz 2009-09-08 23:20:07

0

爲什麼不允許用戶創建一個帳戶,即使它在一個小時內被刪除?
這使得他們能夠看到腳本的註冊過程如何工作至少一個小時,也許在註冊頁面上提示該帳戶僅在一小時內有效。

只是我的想法

+0

這是一個選項,但是我必須再次插入更改爲註冊頁面以顯示消息..所以這是同樣的問題:) – amitkaz 2009-09-08 23:36:11

0

演示版本中是否還有其他功能與生產環境不同?如果僅僅是使用戶註冊的問題,您可以在生產中創建一個註冊的模擬賬戶,併爲用戶提供用戶名/密碼。雖然這可能不是一個取決於其他業務要求的選項。

+0

演示應該具有完全相同的功能,只需播種數據,以便用戶不必創建所有內容以查看網站外觀如何「完整」 。 – amitkaz 2009-09-08 23:40:14

+0

我認爲在生產環境中運行消除大量數據的任務是有點冒險的..一個不同的數據庫更安全。同樣,在我回答瑞安時,對數據污染較少 – amitkaz 2009-09-08 23:43:40

0

如果你願意使用Authlogic,你可以看看this,那麼每X小時你可以通過數據庫查看以anonymous_開頭的用戶並刪除與它們關聯的記錄。

+0

,對於像這樣的大規模創建/刪除數據並不安全,更多的是在合法的用戶帳戶中。我想這只是告訴墨菲:「看這裏 - 一個地方什麼時候都可能會出現可怕的錯誤!「 :) – amitkaz 2009-09-08 23:54:22

+0

很多人使用這種方法,我相信它在執行之前就已經被考慮過了。 – Garrett 2009-09-09 01:44:53

0

只需製作一個與生產環境完全相同的獨立演示網站,但DB每小時重置一次即可清理示例數據。你需要做的唯一改變是在每個頁面頂部的橫幅上標註它的演示。有幾種方法可以做到這一點,(修改你的網站主題,或者使用框架),但基本上你只需要在一個地方而不是在整個網站上更改代碼。

0

您可以在您的database.yml上設置一個新的環境演示,其中包含用戶表的只讀權限以及一個額外的demo_database。然後對您的代碼進行一些檢查,看看您的RAILS_ENV是否在DEMO上。

這樣,你只需要使用相同的代碼庫,只顯示你喜歡它的任何東西。

0

您可以將其作爲具有自己的數據庫的單獨應用程序部署到單獨的域或子域,然後檢查域以決定應該提供哪些選項。例如,如果你把它放在demo.example.com你可以使用:

if request.domain =~ /demo/ 

如果使用Capistrano的,你可以將它設置爲同時更新的應用程序,當你部署,使他們保持同步。