我有一個Rails應用程序生成每週報告並將其發送出去。出於安全性和便利的原因(不想維護Web界面),我不希望生產應用程序具有任何類型的Web界面。我可以將Rails控制器方法限制到開發環境嗎?
不過,我有一個基本的Web界面,我想可以讓我在調試的開發環境數據庫等
有一個簡單的方法,使控制器的方法,除非我無效在開發軌道環境中?
我有一個Rails應用程序生成每週報告並將其發送出去。出於安全性和便利的原因(不想維護Web界面),我不希望生產應用程序具有任何類型的Web界面。我可以將Rails控制器方法限制到開發環境嗎?
不過,我有一個基本的Web界面,我想可以讓我在調試的開發環境數據庫等
有一個簡單的方法,使控制器的方法,除非我無效在開發軌道環境中?
一個好的做法是以下幾點:
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
因爲因爲他們正在閱讀Ruby的類進行評估,你可以這樣做:
class MyController < ActionController::Base
if RAILS_ENV == "development"
def index
#...
end
end
end
在開發模式下運行時,指數法應該只可用。
這可能是有意義的只是讓另一個Rails應用程序共享同一模型的定義,並提供Web界面。這樣,您就不會冒險將任何特殊代碼編碼投入生產,並且您的生產應用程序更小。
如果您使用的乘客,你可以做這樣的事情
<VirtualHost *:80>
ServerName mysite.com
DocumentRoot /home/user/project/public
RailsEnv development
</VirtualHost>
這樣只會使開發可用。
在更高版本的rails中,不推薦使用RAILS_ENV。相反,'RAILS_ENV ==「開發」'使用新的Rails方法,比如'Rails.env.development?'。 – IAmNaN 2012-07-26 21:15:58
謝謝@IAmNaN ...更新的代碼。 – 2012-07-30 18:55:15