我可以将Rails控制器方法限制在开发环境中吗?

时间:2009-07-30 15:38:10

标签: ruby-on-rails

我有一个Rails应用程序,可以生成每周报告并通过电子邮件发送出去。出于安全性和便利性的原因(不想维护Web界面),我不希望生产应用程序具有任何类型的Web界面。

但是,我确实有一个基本的数据库Web界面,我想在我的开发环境中继续进行调试等。

除非我在开​​发rails环境中,否则有一种简单的方法可以使控制器方法无效?

4 个答案:

答案 0 :(得分:11)

一个好的方法如下:

class MyController < ActionController::Base
  before_filter :restrict_to_development, :only => [:user_report]

  def index
    ...
  end

  def user_report
    ...
  end

  protected
    # this method should be placed in ApplicationController
    def restrict_to_development
      head(:bad_request) unless Rails.env.development?
    end
end

答案 1 :(得分:1)

因为ruby的类在读取时会被评估,所以你可以这样做:

class MyController < ActionController::Base

  if RAILS_ENV == "development"
    def index
      #...
    end
  end
end

只有在开发模式下运行时,索引方法才可用。

答案 2 :(得分:0)

简单地创建另一个共享相同模型定义并提供Web界面的rails应用程序可能是有意义的。这样,您就不会冒任何特殊情况代码进入生产的风险,并且您的生产应用程序更小。

答案 3 :(得分:0)

如果你正在使用乘客,你可以做这样的事情

<VirtualHost *:80>
   ServerName mysite.com
   DocumentRoot /home/user/project/public
   RailsEnv development
</VirtualHost>

这只会使开发成为可能。