모두가 최근에 Ruby 성능에 대해 이야기하고 있습니다. 그럴만한 이유가 있습니다. 코드를 약간만 수정하면 성능을 최대 99.9%까지 높일 수 있습니다. 방법에 대한 많은 기사가 있습니다. 코드를 최적화할 수 있지만 코드가 남아 있는지 최적화? 정기적으로 호출되는 메서드에 고정된 상수가 아닌 문자열 리터럴을 포함할 때의 결과를 항상 고려하지는 않을 수 있습니다. 나중에 코드를 유지 관리할 때 절약한 최적화를 잃는 것은 너무 쉽습니다. 최근 Honeybadger의 Ruby gem에서 일부 코드를 두 번째(또는 세 번째) 최적화하
보석 설치는 느릴 수 있습니다. 가장 큰 원인 중 하나는 문서화입니다. gem을 설치할 때마다 컴퓨터는 gem의 소스를 스캔하고 문서를 생성해야 합니다. 오프라인일 때 gem 문서를 자주 확인해야 하는 경우 유용할 수 있습니다. gem server를 실행하기만 하면 됩니다. 액세스하려면 브라우저에서 https://localhost:8808을 지정하세요. ri 명령은 터미널에서 문서를 검색할 때도 편리합니다. 그러나 당신이 나와 같다면 아마도 로컬 문서를 사용하지 않을 것입니다. 아마도 대부분의 경우 인터넷에 제대로 연결되어 있을
Ruby에서 예외를 절대 구하지 마세요! 아마도 당신은 전에 이것을 들어본 적이 있을 것입니다. 좋은 조언이지만 이미 알고 있지 않는 한 꽤 혼란스럽습니다. 이 문장을 분해하여 의미를 알아보겠습니다. Ruby에서 다음과 같은 예외를 구할 수 있다는 것을 알고 있을 것입니다. begin do_something() rescue => e puts e # e is an exception object containing info about the error. end 그리고 오류의 클래스 이름을 제공하여 특정 오류를 복
tl;dr Ruby에서 셸 명령을 실행하고 stdout, stderr 및 반환 상태를 캡처하려면 Open3.capture3를 확인하세요. 방법. 스트리밍 방식으로 stdout 및 stderr 데이터를 처리하려면 Open3.popen3을 확인하세요. . 너무 많은 나쁜 선택 말 그대로 루비에서 쉘 명령을 실행하는 방법은 492가지가 있으며 각각 약간씩 다르게 작동합니다. 아래 방법 중 하나를 사용했을 것입니다. 내 이동 수단은 항상 백틱(``)이었습니다. exec(echo hello world) # exits from ruby,
Ruby에서 자신만의 예외를 만드는 것은 쉽습니다. 다음 단계를 따르세요. 1. 새 수업 만들기 Ruby의 다른 모든 것과 마찬가지로 예외는 클래스입니다! 새로운 종류의 예외를 생성하려면 StandardError 또는 그 자식 중 하나를 상속하는 클래스를 생성하면 됩니다. class MyError < StandardError end raise MyError 규칙에 따라 새 예외에는 오류로 끝나는 클래스 이름이 있습니다. 모듈 내부에 사용자 정의 예외를 넣는 것도 좋은 방법입니다. 즉, 최종 오류 클래스는 다음과 같습니다
예외는 Ruby의 클래스일 뿐입니다. 예외 예외 계층은 Exception에서 상속되는 모든 클래스로 구성됩니다. 다음은 Ruby 2.1의 표준 라이브러리에 대한 예외 계층입니다. Exception NoMemoryError ScriptError LoadError NotImplementedError SyntaxError SecurityError SignalException Interrupt StandardError -- default for rescue ArgumentError
나와 같다면 Rails 콘솔을 많이 사용합니다. 그리고 지금쯤이면 Pry가 그 이후로 Rails 콘솔에서 일어날 수 있는 최선의 일이라는 데 모두 동의하는 것 같습니다....글쎄요. 내장된 몇 가지 정말 멋진 기능으로 일반 IRB에서보다 예외 처리 작업을 훨씬 쉽게 수행할 수 있습니다. 전체 역추적 보기 Pry(또는 해당 문제에 대해 IRB)에서 예외가 발생하면 역추적의 단축 버전이 표시됩니다. 일반적으로 이 정도면 충분하지만 항상 그런 것은 아닙니다. pry에서 wtf -v 명령을 사용하여 가장 최근 예외의 전체 역추적을 볼
개발 및 프로덕션 환경에서 웹 앱을 효과적으로 관리하려면 환경 변수를 이해해야 합니다. 항상 그런 것은 아니었습니다. 불과 몇 년 전만 해도 Rails 앱을 환경 변수로 구성하는 사람은 거의 없었습니다. 그런데 Heroku가 일어났습니다. Heroku는 개발자에게 12단계 앱 접근 방식을 소개했습니다. 12단계 앱 매니페스토에서 배포하기 쉬운 앱을 만들기 위한 많은 권장사항을 제시합니다. 환경 변수에 대한 섹션이 특히 영향을 미쳤습니다. 12요소 앱은 환경 변수에 구성을 저장합니다(종종 env vars 또는 env로 축약됨).
이전 기사인 The Rubyists Guide To Environment Variables에서 환경 변수 시스템이 어떻게 작동하는지 보여주고 몇 가지 일반적인 통념을 깨뜨렸습니다. 그러나 한 유용한 독자가 지적했듯이 우리는 보안에 대해 별로 말하지 않았습니다. 보안 API 키 및 기타 중요한 정보를 저장하기 위해 env vars를 사용하는 것이 일반적이 되었기 때문에 보안 영향을 이해하는 것이 중요합니다. 살펴보겠습니다: 최악의 시나리오 해커가 루트 또는 웹 응용 프로그램을 소유한 사용자로 서버에 액세스했다고 상상해 보십시오.
블록은 Ruby에서 매우 중요한 부분이므로 블록이 없는 언어는 상상하기 어렵습니다. 하지만 람다? 누가 람다를 좋아합니까? 당신은 하나를 사용하지 않고 몇 년을 갈 수 있습니다. 마치 과거의 유물처럼 보입니다. ...하지만 그것은 사실이 아닙니다. 람다는 조금만 조사해 보면 흥미로운 속임수를 쓸 수 있습니다. 이 기사에서는 람다 사용법의 기초부터 시작하여 좀 더 흥미로운 고급 사용법으로 넘어갈 것입니다. 따라서 매일 람다를 사용하고 이에 대해 모두 알고 있다면 아래로 스크롤하십시오. Lambda에 대해 기억해야 할 주요 사항은
따라서 Rails 앱은 많은 RAM을 차지합니다. 새로운 것은 무엇입니까? 그러나 아마도 이것은 상황이 이렇지 않을 것입니다. 아마도 애플리케이션의 메모리 공간이 하나 이상의 부풀려진 보석에 의해 확대되고 있을 것입니다. 나는 최근에 Richard Schneeman의 아주 멋진 프로젝트를 우연히 발견했습니다. 탈선이라고 하며 자동 벤치마킹 도구 모음입니다. 여기 github 저장소가 있습니다. 다음과 같이 gemfile에 추가하기만 하면 됩니다. gem derailed, group: :development gem stackpro
일반적으로 일상 업무에서 비트 단위 수학을 수행할 필요가 없습니다. Ruby의 비트 AND 및 OR 연산자( &및 | )는 아마도 의도보다는 우연히 더 많이 사용됩니다. 누가 실수로 &를 입력하지 않았습니까? 언제 &&를 의미합니까? 그러나 C나 어셈블러와 같은 저수준 언어를 프로그래밍하거나 제 경우에는 Turbo Pascal을 프로그래밍하면서 자랐다면 최소한 약간의 조작은 했을 것입니다. 문제에 대한 Bitwise 솔루션은 훌륭합니다. 컴퓨터가 할 수 있는 가장 기본적인 연산(이진 수학)을 사용하여 문제를 해결할 수 있다면 이
우리 Rubyists는 우리의 해시를 사랑합니다. 그러나 해시에는 몇 가지 잘 알려진 결함이 있습니다. Richard가 Hashie Considered Harmful에서 지적했듯이 때때로 너무 유연할 수 있습니다. 즉, 오타가 빠르고 의도하지 않은 키를 할당하고 참조할 수 있습니다. a = { type: F150 } a[:typo] # nil 몇 가지 일반적인 해시 대안 실제 구조화된 데이터를 저장하기 위해 해시를 사용하는 경우 실제로 유연성이 필요하지 않다고 결정할 수 있습니다. 그것은 당신을 곤경에 빠뜨릴 뿐입니다. 몇 가
이런 걸 원해요 뉴스레터 설정은 너무 오랫동안 내 할일 목록에 있었습니다. 오늘은 내가 그것을 실현하는 날이다. 가입을 원하시면 여기에서 하실 수 있습니다. 나는 긴 카피 뉴스레터를 별로 좋아하지 않는다. 내가 좋아하는 것은 흥미로운 콘텐츠의 선별된 요약입니다. RubyWeekly가 생각납니다. Wistia의 블로그 다이제스트도 마찬가지입니다. 이러한 다이제스트를 수동으로 통합하는 데 너무 많은 시간이 걸립니다. 그러나 완전 자동으로 가는 것은 너무 비인간적입니다. 그래서 제가 원하는 것은 반자동 프로세스입니다. 가장 최근 블
Ruby 개발자가 Hashes를 사용하는 것만큼 무언가를 사용하면 모두 봤다고 생각하기 쉽습니다. 그러나 나는 겸손한 루비 해시가 소매에 몇 가지 트릭을 가지고 있다는 것을 말하려고 왔습니다. 멍청한 키-값 시스템과는 거리가 먼 Hash 개체는 매우 흥미롭고 정교한 작업을 수행할 수 있는 능력을 제공합니다. 모든 개체는 해시 키가 될 수 있습니다. 더 진행하기 전에 명확하지 않을 수 있는 한 가지를 지적하고 싶습니다. 문자열과 기호를 해시 키로 사용하는 경향이 있지만 다른 종류의 객체도 사용할 수 없다는 의미는 아닙니다. 사실
배열을 반복할 때 계속해서 사용하는 속기 한 가지가 있습니다. 앰퍼샌드 콜론 또는 프레첼 콜론이라고도 하는 &:트릭입니다. 익숙하지 않은 경우 작동 방식은 다음과 같습니다. words = [would, you, like, to, play, a, game?] # this... words.map &:length # ..is equivalent to this: words.map { |w| w.length } 최근까지 나는 &:구문이 연산자라고 가정했습니다. 하지만 그렇지 않습니다. ActiveSupport에서 시작하여 Ru
Linux 또는 OSX에서 프로그램을 실행할 때마다 프로세스 내부에서 실행됩니다. 그리고 모든 프로세스에는 이름이 있습니다. 이름은 ps, top 또는 htop과 같은 명령을 실행할 때 표시되는 것입니다. htop은 가장 오른쪽 열에 프로세스 이름을 표시합니다. 기본 프로세스 이름은 무시할 수 있음 기본적으로 프로세스 이름은 실행 중인 프로그램이 포함된 실행 파일 이름에서 파생됩니다. 이것은 대부분의 실행 파일에서 잘 작동합니다. 결국 less를 실행할 때 프로세스 이름이 less여야 한다는 것이 이해가 됩니다. 그러나 기본
그래서 귀하의 클라이언트가 방금 전화를 걸었습니다... 그는 자신의 앱이 수신 이메일을 처리하기를 원합니다. . 베이스캠프처럼. 문제 없습니다. 많은 서비스에서 POST를 통해 앱으로 이메일을 보낼 것입니다. 쉬워야 합니다. 그렇지? 아닙니다. 각 서비스는 독점 형식을 사용합니다. 일부는 구문 분석된 이메일을 보내고 일부는 원시 상태로 보냅니다. 일부는 인증 서명을 보냅니다. 일부는 그렇지 않습니다. 이 부분을 건너뛰고 표준(잘 알려진) 루비 개체로 작업할 수 있다면 좋지 않을까요? 코드를 다시 작성하지 않고 공급업체를
자신의 보석을 호스팅하는 방법을 보여주는 대본 + 스크린캐스트 이 문제를 해결해 보겠습니다. 보석은 훌륭하고 RubyGems.org는 훌륭한 서비스입니다. ...하지만 최근에는 앱에 새로운 보석을 추가할 때마다 기분이 나쁩니다. 생각할수록 우리가 보석을 사용하는 방식에 결함이 있는 것만은 아닌 것 같습니다. 재난이 기다리고 있습니다. 사회 공학 FTW 며칠 전 RubyNation에서 Ben Smith는 Hacking With Gems라는 멋진 강연을 했습니다. 해킹하지 않음 보석이지만 보석을 해킹하는 방법으로...공격 벡터로
JavaScript 코드를 작성하지 않고도 페이지 변경 및 양식 제출 속도를 높이고 복잡한 페이지를 구성 요소로 나누는 방법을 찾고 있다면 이 게시물을 통해 Hotwire를 사용하여 Rails를 한 단계 끌어올릴 수 있습니다. 이 문서에서는 서버 측 렌더링 도구를 사용하는 방법을 알려줍니다. 핫와이어란 무엇입니까? Hotwire는 유선을 통해 JSON 대신 HTML을 전송하여 JavaScript를 작성하지 않고도 최신 웹 애플리케이션을 구축할 수 있는 방법을 제공하므로 페이지 로드 속도가 빨라집니다. Rails는 기존의 단일 페이