我有一个Rails应用程序,可以生成每周报告并通过电子邮件发送出去。出于安全性和便利性的原因(不想维护Web界面),我不希望生产应用程序具有任何类型的Web界面。
但是,我确实有一个基本的数据库Web界面,我想在我的开发环境中继续进行调试等。
除非我在开发rails环境中,否则有一种简单的方法可以使控制器方法无效?
答案 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>
这只会使开发成为可能。