2009-12-20 2 views
1

AWDR 서적과 함께 Ruby on Rails를 배우고 있으며, 로컬 머신에서 실행중인 Rails와 Ruby의 버전에 대해 구체적으로 설명해야합니다. 나는 방금 루비 1.8.7에서 루비 1.8.6 here으로 롤백해야한다는 것을 발견했다. 또한 비계 방법을 지원하기 위해 Rails를 롤백해야하므로 튜토리얼을 쉽게 시작할 수 있습니다.다른 버전의 많은 Ruby on Rails 애플리케이션 관리하기

내 질문은 : 계약을 맺고 현실 세계에서 프로젝트를 개발하고 배포 할 때 어떻게 이러한 모든 다른 버전을 관리 할 것인가?

레거시 코드에 대한 레일의 낮은 허용 오차가 사용 철학을 부정하는 것처럼 보입니다! 그러나 나는 RoR을 높이기 위해 성장할 것이라고 확신한다.

답변

2

RubyGems는 Ruby의 패키지 관리자입니다. 원하는만큼 많은 버전의 gem (패키지)을 설치할 수 있습니다. sudo gem install rails을 실행하여 최신 버전을 설치할 수 있습니다 (현재 2.3.5를 설치합니다). 2.2.2가 필요한 경우 -v 또는 --version 옵션을 지정하십시오 (sudo gem install rails --version 2.2.2). Rails는 또한 바이너리를 설치합니다 (예, 바이너리 파일이 아닙니다.) rails, 프로젝트를 생성합니다. 여러 버전의 보석을 가지고 있기 때문에 어떤 바이너리가 호출되는지 제어해야합니다. 레일 젬을 설치할 때 RubyGems는 bin/ 디렉토리에 파일을 넣습니다.이 파일은 실제 rails 바이너리의 "링크"입니다. 명령 줄에서 rails이라고 말하면 "호출"됩니다. 그러나 모든 루비 젬 "링크"바이너리는 자신의 매개 변수를 받아들입니다. 사용하고자하는 버전입니다. 당신이 사용하는 것과 2.2.2은 다음과 같이 진 레일 :

rails myproject 
:

rails _2.2.2_ my_project 

나는 기본 당신이 최신 버전을 사용하려는 경우,이 작업을 수행 할 수 있도록, 최신 버전을 사용하는 것입니다 생각

그러나 2.2.3을 사용하여 scaffold 메소드에 액세스하는 것으로 나타났습니다. 나는 당신이 그 방법을 사용하지 말 것을 강력하게 제안 할 것입니다, 그것을 제거하는 이유가 있습니다. scaffold 메서드는 코드를 숨기고 사용자 지정을 어렵게 만듭니다.대신, 발판 생성기를 사용하십시오 :

./script/generate scaffold --help 

미래의 레일 모험에 행운을 비네!

+0

예, 스캐 폴드가 감가 상각됩니다. AWDR에 있습니다. 이 책을 살펴본 후에는 스킬 셋에서 버릴거야. 고마워! – Rimian

2

애자일 웹의 최신 버전은 2.2.2 용으로 작성되었습니다. 이 기본 응용 프로그램을 위해 그들은 걸어 당신을 통해 나는 그것이 2.3.x와 함께 작동해야 확실하다.

당신이 어떻게 지키기위한 질문에 대한 대답은 당신이 필요에 따라 귀하의 애플 리케이션을 업데이 트하고 찾을 API와 Changleogs를 읽는 것입니다 변경된 사항을 파악하고 업그레이드가 중단되는 부분을 수정하십시오. 이를 돕는 좋은 방법은 좋은 테스트 커버리지를 가진 훌륭한 테스트 스위트를 갖추는 것입니다. 레일에 관해서는

+0

유용한 답변입니다. 그러나 그것이 가능한가? 이전 버전에서 작업하도록 계약을 맺은 경우이를 실행할 수 있어야합니다. 클라이언트가 업그레이드를 원하지 않으면 어떻게합니까? 그러나 솔루션이 이상적이라고 생각합니다. – Rimian

+1

이전 버전의 gem을 실행해야하는 경우 environment.rb에서 해당 버전과 버전을 지정한 다음 @khelll에서 제안한대로 공급 업체 디렉토리에 레일 및 보석을 고정합니다. – nitecoder

3

, 예를 들어 버전을, 동결 당신이 할 수 있습니다 gem install rails V = 2.2.2 :

  1. 것은 적절한 레일 버전을 설치해야합니다, 당신은 버전 2.2.2을한다고 가정 rake rails:freeze:edge RELEASE=2.2.2

지금 당신은 배포 시스템에 레일을 설치하지 않아도, 프로젝트의 공급 업체 폴더 안에 포장 된 레일을 발견 할 것이다 : 프로젝트 자체

  • 정지 및 팩 레일.

    Ruby의 경우 Ruby 버전을 관리하는 가장 쉬운 방법 인 Ruby Version Manager (RVM)을 좋아합니다.

  • +0

    아, 이제 답을 이해하는 데 더 많은 것을 배워야합니다! 감사합니다 :) – Rimian

    +0

    어느 부분을 이해하지 못하겠습니까? – khelll

    +0

    나는 보석과 갈퀴가 정확히 무엇인지에 관해서 속도를 내기 어렵다. 나는 충분히 빨리 추측 할 것이다. 내 프로젝트에 레일을 패키지로 묶은 경우 12 개 정도의 프로젝트를 수행 한 후에 막대한 양의 코드를 관리하지 않겠습니까? – Rimian