Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Rails 4.2의 덜 알려진 기능

Rails 4.2의 첫 번째 베타가 지난 주에 발표되었으며 이미 놀랍습니다. 내 앱에서 ActiveJob, 웹 콘솔, 적절한 레코드 및 외래 키 지원을 사용하게 되어 정말 기쁩니다.

하지만 Rails의 아름다움은 디테일에 있습니다. 그리고 조금만 더 파고들면 Rails를 사용한 일상 업무를 완전히 개선할 수 있는 덜 알려진 기능을 발견할 수 있을 것입니다.

손쉬운 구성 파일 로드

좋아, 내가 편견을 가질 수 있습니다. 하지만 구성 파일을 로드하는 방법이 내장되어 있다는 것은 정말 멋진 일입니다.

config_for , Rails 4.2의 새로운 기능은 예상대로 작동합니다.

config/redis.yml
development:
  host: localhost
  port: 6379
test:
  host: localhost
  port: 6379
production:
  host: redis-production
  port: 6379
irb(main):001:0> Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6379}

즉, config_for(:redis)를 호출하면 , config/redis.yml을 찾습니다. Rails 앱에서 이를 구문 분석하고 RAILS_ENV에 대한 올바른 구성을 반환합니다. .

Yaml에 ERB를 넣을 수도 있습니다.

config/redis.yml
development:
  host: localhost
  port: <%= ENV['REDIS_PORT'] %>
test:
  host: localhost
  port: <%= ENV['REDIS_PORT'] %>
production:
  host: redis-production
  port: <%= ENV['REDIS_PORT'] %>
$ REDIS_PORT=6380 bin/rails c
Loading development environment (Rails 4.2.0.beta1)
irb(main):001:0>  Rails.application.config_for(:redis)
=> {"host"=>"localhost", "port"=>6380}

앱에서 많은 서비스를 구성하면 초기화 프로그램을 훨씬 더 쉽게 읽을 수 있습니다.

앱 부트스트랩

대부분의 Rails 앱은 몇 가지 명령을 실행하기 전에 실행해야 합니다. 대부분 비어 있는 Rails 앱도 부팅하기 전에 데이터베이스를 설정해야 합니다.

따라서 Rails는 다시 한 번 구성보다 관례를 적용하여 설정 코드를 위한 공간을 만들었습니다. bin/setup .

기본값이 좋습니다. 하지만 bin/setup 또한 앱을 시작하는 데 필요한 다른 코드를 넣을 수 있습니다.

이제 이것이 규칙이므로 앱에 대한 부트스트랩 스크립트를 이미 작성한 경우 이름을 bin/setup으로 변경합니다. , 귀하의 앱을 사용하는 사람들이 쉽게 시작할 수 있도록 합니다.

bin/setup 새로운 Rails 앱을 생성할 때 결정해야 할 사항이 한 번 줄어듭니다. 그리고 일단 bin/setup을 실행하는 습관을 들이면 git pull 후 , rake db:setup을 실행하는 것을 기억할 필요가 없습니다. 새 앱을 다시 생성할 때.

해시 값 변환

이것은 Ruby에 내장되어 있기를 원할 정도로 자주 필요한 또 다른 것입니다. transform_values를 호출할 때 해시에서는 map 호출과 같은 역할을 합니다. 해시 값에 대해 대체된 값과 연결된 원래 키와 함께 새 해시를 반환합니다.

h = {a: 1, b: 2, c: 3}

h.transform_values { |v| v * 2 } # => {a: 2, b: 4, c: 6}

충분히 간단합니다. 하지만 이 기능이 얼마나 자주 유용하게 사용되는지 놀라게 될 것입니다.

보너스:추가 구성!

Rails 4.2는 고유한 전역 구성을 설정하는 간단한 방법을 제공합니다.

Rails.application.config.x.some_configuration_key = "Some Value"

Rails.application.config.x.some_configuration_key # => "Some Value"
Rails.configuration.x.some_configuration_key # => "Some Value"

이것은 config_for와 결합할 때 특히 잘 작동합니다. :

app_config = Rails.application.config_for(:app)
Rails.application.config.x.block_phone_calls = app_config["block_phone_calls"]

그리고 더 많은 것이 있습니다!

Rails 4.2가 놀라운 릴리스로 설정된 것 같습니다. 그러나 매일 Rails에서 작업하는 것을 매우 훌륭하게 만드는 것은 작은 개선 사항입니다. 따라서 아직 하지 않았다면 4.2 릴리스 노트를 살펴보고 어떤 다른 유용한 개선 사항을 찾을 수 있는지 확인하십시오.

(그리고 하는 경우 멋진 것을 찾으십시오. 혼자 두지 마십시오. 여기에서 공유하여 우리 모두 새로운 것을 배울 수 있습니다!)