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

Ruby 2.1로 업그레이드해야 합니까?

스크린샷으로 답변해 드리겠습니다.

{% img img-responsive /images/posts/ruby-2-1-improvement.png 645 259 그렇군요 %}

우리는 약 일주일 전에 프로덕션에서 Ruby 1.9에서 2.1로 업그레이드했으며 이것이 우리가 본 것입니다. 맨 아래에 있는 회색 부분은 거의 아무것도 하지 않는 가비지 수집 시간입니다. 전반적으로 업그레이드를 통해 서버 응답 시간이 15-20% 향상되었습니다. 추가 GC 튜닝을 하지 않아도 됩니다!

업그레이드를 제공한 후 Google 및 Bing의 크롤링 속도가 크게 향상되었습니다. 이는 특히 검색 엔진 트래픽의 이점을 많이 받는 Google과 같은 사이트에 매우 좋습니다.

멋지네요. 얼마나 힘들었나요?

150개에 가까운 gem 종속성이 있는 대규모 Rails 앱에서 업그레이드에는 작은 커밋 한 번과 며칠 간의 테스트가 필요했습니다. 우리는 모든 서버에서 rvm을 실행하고 withchef를 제공하므로 모든 서버를 2.1로 업그레이드하는 것은 요리사 역할 파일의 버전 번호를 변경하는 것만큼 간단했습니다.

어떤 문제에 부딪쳤습니까?

우리는 여전히 음역에 iconv를 사용하므로 2.x에서 제거된 내장 기능을 대체하는 iconv gem을 포함해야 했습니다. 2.x에서 작동하는 getruby-debug 또는 debugger gem을 사용할 수 없었기 때문에 pry andpry-byebug로 전환했습니다. 나는 여전히 pry-byebug보다 디버거 gem을 선호하지만 pry는 irb보다 훨씬 낫기 때문에 일종의 세척제입니다. byebug의 저자인 Deivid Rodriguez는 pry-byebug에 대한 나의 문제가 아마도 byebug로 인한 것이 아니라고 지적했습니다. 그는 완전히 옳았다! (실제로는 byebug와 pry의 상호작용으로 인해 발생했습니다.) .

1.9와 2.1이 혼합된 환경에서는 번들러도 1.5.1로 업그레이드해야 합니다. 새 버전의 번들러를 사용하면 Gemfile에서 플랫폼 요구 사항으로 2.1을 지정할 수 있습니다.

gem 'iconv', '~> 1.0.2', :platform => [:mri_20, :mri_21]

Aman Gupta가 이 요지에서 언급한 것처럼 GitHub가 2.1에서 다른 문제에 부딪힌 것 같습니다.

또한 더 빠른 속도를 얻기 위해 배송 후 GC를 조정하고 싶을 것입니다. Aman은 https://tmm1.net/ruby21-rgengc/에서 자세한 방법에 대한 많은 정보를 제공하는 좋은 게시물을 가지고 있습니다. 저렴하고 간단한 Ruby 업그레이드를 최대한 활용하려면 그의 블로그에 있는 전체 2.1 시리즈를 읽을 가치가 있습니다.