2009-07-30 50 views
1

我有一個Rails應用程序生成每週報告並將其發送出去。出於安全性和便利的原因(不想維護Web界面),我不希望生產應用程序具有任何類型的Web界面。我可以將Rails控制器方法限制到開發環境嗎?

不過,我有一個基本的Web界面,我想可以讓我在調試的開發環境數據庫等

有一個簡單的方法,使控制器的方法,除非我無效在開發軌道環境中?

回答

10

一個好的做法是以下幾點:

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 
+3

在更高版本的rails中,不推薦使用RAILS_ENV。相反,'RAILS_ENV ==「開發」'使用新的Rails方法,比如'Rails.env.development?'。 – IAmNaN 2012-07-26 21:15:58

+0

謝謝@IAmNaN ...更新的代碼。 – 2012-07-30 18:55:15

1

因爲因爲他們正在閱讀Ruby的類進行評估,你可以這樣做:

class MyController < ActionController::Base 

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

在開發模式下運行時,指數法應該只可用。

0

這可能是有意義的只是讓另一個Rails應用程序共享同一模型的定義,並提供Web界面。這樣,您就不會冒險將任何特殊代碼編碼投入生產,並且您的生產應用程序更小。

1

如果您使用的乘客,你可以做這樣的事情

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

這樣只會使開發可用。

相關問題