Configuring Rails Apps.
제 72회 Biweekly Lecture
2014-10-14
Majestin
- ROR Lab. Season 4 -

- Action Controller
- Action Dispatch
- Action View

Action Controller
- 요청 처리
- 파라미터 추출
- 사용자가 유도한 액션
config.action_controller.asset_host
에셋의 호스트를 설정
에셋 호스트로 CDN을 사용할 경우 유용
config.action_controller.asset_host = Proc.new { |source|
if source.starts_with?('/images') or source.starts_with?('/statics')
"http://statics.example.com"
else
""
end
}config.action_controller.perform_caching
어플리케이션의 캐싱 수행 여부를 설정합니다.
개발 환경에서는 false로 설정되어 있고 배포 환경에선 true로 설정 됩니다.
config.action_controller.perform_caching = true
config.action_controller.default_static_extension
캐시 된 페이지들의 확장자를 설정합니다. 기본값은 `.html` 입니다.
config.action_controller.default_charset
컨트롤러의 기본 문자 세트를 지정합니다.
기본값은 "utf-8" 입니다.
config.action_controller.default_charset = "euc-kr"
config.action_controller.logger
Action Controller에서 로그 정보를 사용합니다.
로깅(로그 정보 기록)을 사용하지 않으려면 `nil`로 설정합니다.
config.action_controller.logger = nil
config.action_controller.request_forgery_protection_token
요청위조(RequestForgery)방지를 위한 token 매개 변수 이름을 설정합니다. `protect_from_forgery`의 호출은 기본적으로 `:authenticity_token`을 설정합니다.
config.action_controller.allow_forgery_protection
CSRF 보호의 활성화 또는 비활성화를 합니다.
기본적으로 테스트 환경에서는 `false`이고 다른 환경에선 `true`로 설정되어 있습니다.
config.action_controller.relative_url_root
Rails에 배포하는 하위 디렉토리를 전달하는 데 사용됩니다.
기본값은 `ENV['RAILS_RELATIVE_URL_ROOT']` 입니다.
When precompile, set ENV
RAILS_RELATIVE_URL_ROOT=/rorlab bundle exec rake assets:precompile
config.action_controller.permit_all_parameters
모든 매개 변수 mass assignment를 기본 값으로 허용 여부를 설정합니다.
기본값은 `false` 입니다.
http://code.tutsplus.com/tutorials/mass-assignment-rails-and-you--net-31695
attrs = {:first => "John", :last => "Doe", :email => "john.doe@example.com"}
user = User.new(attrs)
user.first #=> "John"
user.last #=> "Doe"
user.email #=> "john.doe@example.com"
만약 mass assignment가 없다면 위의 식은 다음과 같은 되어야 한다.
attrs = {:first => "John", :last => "Doe", :email => "john.doe@example.com"}
user = User.new
user.first = attrs[:first]
user.last = attrs[:last]
user.email = attrs[:email]
user.first #=> "John"
user.last #=> "Doe"
user.email #=> "john.doe@example.com"
config.action_controller.action_on_unpermitted_params
만약 매개 변수가 명시적으로 허용되지 않은 것이라면 로깅 또는 예외 발생을 활성화합니다.
`:log` 또는 `:raise`를 설정하여 활성화합니다.
기본값으로 개발 환경과 테스트 환경에선 `:log`이며, 그 외의 환경에서는 `false`로 설정되어 있습니다.
config.action_controller.action_on_unpermitted_params = ':log' #':raise'
Action Dispatch
- Web 요청을 라우팅
- ActionController에 요청 전달
config.action_dispatch.session_store
세션 데이터 저장소의 이름을 설정합니다.
기본값으로 `:cookie_store`이며 다른 유효한 옵션은`:active_record_store`, `:mem_cache_store` 또는 사용자 정의 클래스의 이름입니다.
config.action_dispatch.session_store
config.action_dispatch.default_headers
각 응답에 설정할 HTTP 헤더의 해시값입니다.
기본적으로 아래와 같이 정의됩니다.
config.action_dispatch.default_headers = {
'X-Frame-Options' => 'SAMEORIGIN',
'X-XSS-Protection' => '1; mode=block',
'X-Content-Type-Options' => 'nosniff'
}
X-Frame-Options 은 다음 세가지 값 중 하나를 사용할 수 있습니다.
DENY 해당 페이지는 frame을 표시할 수 없습니다.
SAMEORIGIN 해당 페이지와 동일한 orgin에 해당하는 frame만 표시할 수 있습니다.
ALLOW-FROM uri 해당 페이지는 지정된 orgin에 해당하는 frame만 표시할 수 있습니다.
X-XSS-Protection '1; mode=block' 레일스 디폴트 값 - XSS 공격이 감지되면 XSS Auditor와 차단 페이지를 사용한다. XSS Auditor 기능을 사용하지 않을 때 '0;'으로 설정한다. (이것은 응답 컨텐츠 스크립트가 요청 파라미터로부터 올 경우에 유용한다.)
X-Content-Type-Options 'nosniff' 레일스 디폴트 값 - 브라우저가 파일의 MIME 타입을 추측하지 못하게 한다.
config.action_dispatch.tld_length
어플리케이션을 위한 TLD(최상위 도메인)의 길이를 설정합니다.
기본값은 `1` 입니다.
(예를 들어, co.kr과 같은 도메인을 사용할 경우엔 2로 지정하는 것과 같습니다.)
ActionDispatch::Callbacks.before,
ActionDispatch::Callbacks.after
요청 전, 후에 실행하는 코드 블럭을 가져옵니다.
# File actionpack/lib/action_dispatch/middleware/callbacks.rb, line 13
def self.before(*args, &block)
set_callback(:call, :before, *args, &block)
end
Action View
- HTML이나 XML 생성
- Rendering Template 관리
- built-in AJAX를 지원
config.action_view.field_error_proc
Active Record에서 오류를 표시하기 위한 HTML 생성기를 제공합니다.
기본값으로 다음과 같습니다.
Proc.new do |html_tag, instance|
%Q(<div class="field_with_errors">#{html_tag}</div>).html_safe
end
config.action_view.default_form_builder
기본적으로 사용할 form builder를 Rails에 전달합니다.
만약 자신의 form builder 클래스를 초기화(개발 환경에서는 각 요청 후에 다시 로드 됩니다.) 후 로드 하려는 경우엔 `String`으로 전달할 수 있습니다.
config.action_view.default_form_builder = 'ActionView::Helpers::FormBuilder'
config.action_view.logger
Action View에서 로그 정보 출력에 사용되는 적합한 로거를 사용합니다.
`nil`로 설정시 로깅(정보 기록)은 비활성화 됩니다.
config.action_view.logger = 'nil'
config.action_view.prefix_partial_path_with_controller_namespace
네임 스페이스 이름이 붙은 컨트롤러의 partial을 그리기 위한 템플릿을 하위 디렉토리에서 검색 여부를 결정합니다.
예를 들어, 컨트롤러 이름이 `Admin::PostsController`으로 가정하였을때 템플릿을 렌더링하는 경우는 아래와 같습니다.
<%= render @post %>
true -> `/admin/posts/_post.erb`의 partial
false -> `/posts/_post.erb`
CONFIGURING RAILS APPLICATIONS Part 6
By hanguk lee
CONFIGURING RAILS APPLICATIONS Part 6
Part 6 - Action Controller, Action Dispatch, Action View
- 1,029