Могу ли я ограничить методы контроллера Rails средой разработки? - PullRequest
2 голосов
/ 30 июля 2009

У меня есть приложение Rails, которое генерирует еженедельный отчет и отправляет его по электронной почте. Я не хочу, чтобы производственное приложение имело какой-либо веб-интерфейс, из соображений безопасности и удобства (не хочу поддерживать веб-интерфейс).

Однако у меня есть элементарный веб-интерфейс для базы данных, который я хотел бы сохранить в своей среде разработки для отладки и т. Д.

Есть ли простой способ сделать методы контроллера недействительными, если я не нахожусь в среде разработчиков?

Ответы [ 4 ]

12 голосов
/ 31 июля 2009

Хороший подход был бы следующим:

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 голос
/ 30 июля 2009

Поскольку классы ruby ​​оцениваются по мере их чтения, вы можете сделать это:

class MyController < ActionController::Base

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

Метод индекса должен быть доступен только при работе в режиме разработки.

0 голосов
/ 31 июля 2009

если вы используете пассажира, вы можете сделать что-то вроде этого

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

это только сделает разработку доступной.

0 голосов
/ 31 июля 2009

Возможно, имеет смысл просто создать другое приложение rails, которое использует те же определения модели и предлагает веб-интерфейс. Таким образом, вы не рискуете отправлять какой-либо специальный код в производство, а ваше производственное приложение меньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...