我应该如何构建我的Rails 3应用程序以在Heroku上进行beta测试?

时间:2011-04-04 21:30:19

标签: ruby-on-rails heroku

我正在深入研究Ruby on Rails,我正在尝试从头开始构建一个基本的Web应用程序来学习平台和相关技术。到目前为止,我只在本地计算机上运行它,但我想将它部署到一个免费的Heroku帐户,开始熟悉在实时服务器上部署和测试应用程序。显然,我不希望这个应用程序公开发布给任何人,因为它远未完成,根本没有为公众使用做好准备。我想我想要做的是类似于封闭式测试,但由于这是我的第一次尝试,我不知道我应该朝哪个方向去实现这个目标。

我启用了用户帐户和身份验证。我可以做的一件事是扔一个静态登陆页面,显示该网站正在建设中,由于我有一个登录URL,我可以将before_filter添加到我的所有控制器,这样我才能登录访问该网站,但这感觉hackish,并没有让我正确测试应该公开的页面(因为他们是私人的)。我至少在这里有正确的想法吗?或者我的策略是什么?

在他们准备上市之前,Heroku是否有任何内置支持保持网站的私密性?

任何方向都会有所帮助,非常感谢你!

2 个答案:

答案 0 :(得分:4)

首先,如果您正在使用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 :(得分:1)

如果您希望允许多个用户进行beta测试而无需强制执行http basic auth,则可以在User模型上设置status属性。通过这种方式,您仍然可以让人们注册,然后通过Heroku控制台或您自己的管理页面批准它们。

新的Rails枚举功能让它非常简单。

创建迁移:

rails g migration AddStatusToUsers users:integer

包括枚举状态和之前的操作:

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

#live?方法是给你免费的Enums。 http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html