2014. 10. 23. 14:24

루비 온 레일즈 4.1 릴리즈 노트





주목할 만한 것들

  1. Spring의 Application Preloader

  2. 새로 생긴 config/secrets.yml 파일

  3. 액션팩(ActionView와 ActionController 모듈을 합쳐 부르는 것) 의 변수들

  4. Action Mailer 미리보기

2. 주요 특징
2.1 Spring 
- Spring은 rails의 preloader 이다. 프로그램을 백그라운드에 돌아가게 해줘서 테스트 실행을 할 때나 rake 작업이나 migration 할때마다 시작 할 필요가 없게 해줌으로 개발 속도를 높여준다.

- Rails 4.1 버전은 "springified" binstubs를 포함한다.  즉, bin/rails 와 bin/rake는 preloaded spring 환경으로 부터 긍정적 효과를 본다는 것이다.
(binstubs 는 실행가능한 파일 감싸는 코드<wrapper script> 인데 실행 가능한 파일을 호출하기 전에 환경을 준비하는 역할을 한다. 루비에서는 보통 RubyGem이 executable을 포함하는 gem을 설치하고 나서 binstub을 생성한다.)

Spring README


2.2 config/secrets.yml

- Rails 4.1 버전은 이전에 없던 secrets.yml 파일을 생성하게 된다.

 이 파일은 기본적으로 application의 secret_key_base를 포함하는데 이것은 외부 API를 위한 액세스 키 같은 비밀 data를 저장하는데 쓰일 수 있다.


- secrets.yml에 추가된 비밀 데이터들은 Rails.application.secrets를 통해 접근이 가능하다. 


- 예를 들면 

 "키 : 키값" 이 secrets.yml 파일에 있을때

 development 환경에서 "Rails.application.secrets.키" 는 키값을 리턴한다. 


2.3 Action Pack 변수

- 주로 스마트폰, 타블렛, pc 브라우저에 따라 다른 HTML/JSON/XML 템플릿들을 렌더링 할때 쉽게 할 수 있게 해준다.


2.4 Action Mailer Previews

- 특별한 URL을 통해 email을 시각적으로 볼 수 있게 해주는 방법을 제공한다.


- ActionMailer 패키지 

http://api.rubyonrails.org/v4.1.0/classes/ActionMailer/Base.html#class-ActionMailer::Base-label-Previewing+emails


2.5 Active Record enums

- http://api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html


2.6 Message Verifiers

- Message Verifiers로 서명된 메세지를 생성하고 확인할 수 있다. 민감한 데이터를 안전하게 전송할 때 유용하다.


- Rails.application.message_verifier 메소드는 secret_key_base 와 message verifier 이름으로 부터 키를 얻어 메세지에 서명을 하는  message verifier를 생성한다.


2.7 Module@concerning

- mix-in으로 생기는 단점을 제거함으로써 자연스럽고 low-ceremony[각주:1]적인 방법으로 하나의 클래스의 역할을 분리해서 관리 할 수 있다.


- 링크 : http://api.rubyonrails.org/v4.1.0/classes/Module/Concerning.html


2.8 CSRF protection from remote <script> tags

- Cross site request forgery(CSRF) protection 은 GET 요청을 통한 자바스크립트 응답도 처리할 수 있다. 즉, 제 3자의 사이트에서 당신의 자바스크립트 URL을 참조하는 것과 중요한 데이터를 추출해내기 위해 자바스크립트를 구동하는것을 예방해 준다.


- 자바 스크립트 url이 xhr을 이용하지 않는 이상 CSRF protection에 막혀 실패할 것이다. 그러므로 XmlHttpRequests 를 명시적으로 사용하도록 post:create, format: : js 대신 xhr : post, :create, format: :js 를 사용하라.


3 Railties (rails 네임스페이스 안의 class이다. Object 클래스를 상속받음)

3.1 제거된 것들

      • Removed update:application_controller rake task
      • Removed deprecated Rails.application.railties.engines
      • Removed deprecated threadsafe! from Rails Config
      • Removed deprecated ActiveRecord::Generators::ActiveModel#update_attributes 
      • - ActiveRecord::Generators::ActiveModel#update 가 대체한다.
      • Removed deprecated config.whiny_nils  option
      • Removed deprecated rake tasks for running tests : rake test:uncommitted and rake test:recent

3.2 주목할 만한 변경사항

      • Spring application preloader 가 기본적으로 새 어플리케이션에 설치된다.

- 그러나 이것은 develop group의 Gemfile을 사용하므로 production 모드에서는 설치가 안될 것이다.

      • BACKTRACE 환경 변수가 사라지는 현상
      • 환경 설정에 노출된 MiddlewareStack#unshift

--------------------미 완 성-----------------------------------


하아.. 너무 많다... 글 쓰기 싫다.. 아직 절반도 못한거 같은데
 이 내용을 다 옮겨야 되나..

릴리즈 노트 링크 

http://edgeguides.rubyonrails.org/4_1_release_notes.html





  1. [term]low-ceremony 참고 참고 [본문으로]
Posted by Superkill
2014. 10. 23. 13:48

2014년 10월 23일 기준으로 4.1.6 버전 api을 보여준다.

링크 : http://api.rubyonrails.org/

'ruby on rails > Reference' 카테고리의 다른 글

[루비 젬] RubyGems.org  (0) 2014.10.19
Ruby On Rails Guides  (1) 2014.10.14
Posted by Superkill
2014. 10. 23. 12:43

rails release note 4.1을 보다가 low-ceremony way 라는 표현이 나와서 무슨 뜻인지 찾아봤다.


찾다 보니 high ceremony 라는 말도 있던데 도무지 찾아도 용어에 대한 정의는 나오지 않고

뒤적뒤적 거리다가 힌트를 얻은 글이 있었다.



In this paper, we draw on numerous empirical studies of end-user and professional programmers to show that the reusablity of code can be inferred on the basis of "low-ceremony" evidence. This evidence is information that is often informal, possibly unreliable, but that can be quickly gathered, interpreted and synthesized without the investment of substantial effort or skill by code producers or consumers.


위에 써있는 대로 low ceremony


"정형화 되지 않고, 믿을 수 없겠지만 , 개발자와 고객이 상당한 노력이나 기술을 가지고 조사할 필요 없이 빠르게 (정보가) 모아지고 이해되고 종합되는"


이런 것 이라고 보면 될 것 같다.


정리하자면 

'정형화 되지 않았지만 보고 이해하고 종합하기 쉬운'  이 정도 의미라고 하면 될 것 같다.



글 링크 (pdf 파일입니다)

http://web.engr.oregonstate.edu/~cscaffid/papers/eu_20081031_eupwebsharing.pdf

'terms' 카테고리의 다른 글

무한스크롤 (Infinite Scroll) 그리고 페이지네이션 (Pagination)  (0) 2014.12.30
[Markdown] 마크다운 문법  (0) 2014.10.22
CDN - contents delivery network  (0) 2014.10.22
[ruby] mixin  (0) 2014.10.21
software vs application  (0) 2014.10.19
Posted by Superkill