문제

먼저 약간의 배경지식입니다.

저는 전체 개발 경력 동안 MS 플랫폼에서 작업해 왔습니다.2주 전까지만 해도 저는 98/XP/Vista 이외의 다른 OS를 부팅한 적이 없었습니다.저는 오래 전부터 VSS를 사용하기 시작했고 약 2년 전에 SVN으로 변경했습니다.SVN에서는 TortiseSVN을 사용하고 표준 분기/태그/트렁크 설정을 사용합니다.

내 프로젝트도 자체 포함되어 있습니다. 즉, 새로운 개발 상자로 이동하여 단일 저장소를 풀다운하고 VS를 열고 F5 키를 누르면 실행됩니다(대부분의 경우).모든 종속성은 lib 폴더, 소스 코드는 src 폴더 등등...

새로운 것을 배우기 위한 노력의 일환으로 저는 Ruby on Rails 애플리케이션을 구축하기로 결정하고 Ubuntu 기반 개발 시스템을 만들었습니다.저는 SVN 서버를 실행 중이며 이 프로젝트에서 다른 사람과 함께 작업하고 있습니다.그는 개발용 컴퓨터로 Mac을 사용하고 있습니다.

이제 문제가 발생합니다.

저는 다양한 버전의 Ruby, Rails 및 제가 작업 중인 모든 플러그인을 관리하는 방법에 어려움을 겪고 있는 것 같습니다.또한 우분투에서 SVN을 사용하는 데 어려움을 겪고 있는 것 같습니다.

따라서 우분투에는 Ruby가 사전 설치되어 있습니다.버전 1.8.5라고 말하고 싶습니다.어느 쪽이든, 내가 사용하고 있는 플러그인(커뮤니티 엔진)에 설치할 보석이 잔뜩 있었습니다.*nix를 처음 접했기 때문에 사용하지 않았습니다. sudo 설치할 때 온갖 문제가 발생했습니다.나는 결국 Ruby를 완전히 날려버리고 새롭게 시작하게 되었습니다.그게 효과가 있는 것 같았어요.

하지만 문제는 내가 내 코드를 커밋하고 다른 사람이 최신 코드를 얻은 후에 보석을 설치하는 전체 과정을 거쳐야 한다는 것입니다.

RoR 애플리케이션에서 gem 및 플러그인을 관리하는 모범 사례는 무엇입니까? SVN에 수많은 파일이 추가되더라도 상관하지 않습니다.디스크 공간과 네트워크 대역폭이 저렴합니다.나는 이것을 올바르게 수행하는 방법을 모르겠습니다.

SVN으로 넘어갑니다.

RapidSVN을 설치했지만 폴더가 잠기는 문제가 자주 발생합니다.몇 번 나는 내 실수를 깨달았고 다른 사람들은 이유를 전혀 몰랐습니다.하지만 두 경우 모두 문제를 해결할 수 없었습니다.결국 내 코드를 백업하고 새 작업 복사본을 가져온 다음 변경 사항을 수동으로 이동하고 프로젝트에 커밋할 때 좀 더 똑똑해졌습니다.

실제로 어젯밤에 RTFM을 하다가 내 저장소에 대한 북마크를 만든 다음 해당 북마크에서 "작업 복사본 체크아웃"을 수행해야 한다는 것을 알았습니다.왜인지는 모르겠지만, 설명서에는 그렇게 나와 있습니다.

Ubuntu의 RoR 프로젝트에서 SVN을 사용하는 모범 사례는 무엇입니까?

나는 말 그대로 이것에 대한 단계별 프로세스를 찾고 있습니다.

편집하다내 IDE에 NetBeans를 사용한다는 사실을 언급하는 것을 잊어버렸습니다. 비록 어떤 종류의 SVN 지원이 있는지 살펴보지는 않았지만 말이죠.RubyMine을 보고 사용해 보고 싶었지만 지금은 너무 불안정한 것 같습니다.

도움이 되었습니까?

해결책

플러그인의 경우 개인적으로 공급업체 폴더에 저장하고 코드를 직접 작성한 것처럼 SVN에 추가하는 것이 좋습니다.Piston도 훌륭한 솔루션이었지만 모든 일반 플러그인이 github로 이동하기 시작하면서 피스톤에서 전환했습니다(그 이후로 피스톤은 신뢰할 수 없었습니다).

보석의 경우 레일 2 이상을 사용하시기 바랍니다.당신은 당신이 필요로하는 보석을 당신의 목록에 나열해야합니다 config/environment.rb 사용하여 config.gem. 해당 기능에 대한 다양한 정보는 다음과 같습니다.

이것이 의미하는 바는 새로운 gem을 추가하면 다음에 동료가 업데이트할 때 그의 Rails 앱이 업데이트된다는 것입니다. 부팅되지 않습니다 그가 필요한 보석을 얻을 때까지.그런 다음 다음을 사용하여 한 단계로 설치할 수 있습니다. sudo rake gems:install

한 단계 더 나아가서 gem을 Vendor 디렉터리에 넣을 수 있습니다.이것은 일반적으로 "공급 업체 모든 것"으로 알려져 있습니다. 이 작업을 수행하는 가장 쉬운 방법은 사용하는 모든 보석을 나열하는 것입니다. environment.rb 위와 같이 실행한 후 rake gems:unpack.그러나 이 접근 방식에는 두 가지 문제가 있으므로 직접 사용하지 않는 것이 좋습니다.

  1. 10개의 앱이 있고 각 앱이 gem을 판매하는 경우 Subversion에 공통 gem의 복사본 10개를 보관하게 되어 모든 사이트를 업데이트하는 속도가 훨씬 느려집니다.
    이는 귀하에게 문제가 되지 않을 수도 있고 참을 만한 가치가 있을 수도 있습니다. 이는 단지 개인적인 취향일 뿐입니다.

  2. 일부 gem(예: mongrel 또는 hpricot)에는 C로 작성된 기본 확장이 있습니다.이것이 의미하는 바는 설치 시 .c 소스코드가 다운로드되고, gcc 시스템에 맞게 특별히 컴파일하기 위해 실행됩니다.
    우분투에 기본 C 확장을 설치한 다음 이를 공급업체 폴더에 넣고 나중에 이를 OS X(또는 다른 버전의 우분투)에서 실행하려고 하면 Ruby 프로세스가 중단되고 앱이 실행될 가능성이 높습니다. 아래에.
    모든 보석이 순루비 보석이라면 이는 문제가 되지 않지만 단지 알아두어야 할 사항일 뿐입니다.

다른 팁

많은 사람들이 피스톤이나 사막을 사용하여 플러그인을 관리하고 Rail 로컬 공급업체 폴더(SVN에 저장됨)에 gem을 설치합니다.

http://www.rubyinside.com/advent2006/12-piston.html http://pivotallabs.com/users/brian/blog/articles/459-build-your-own-rails-plugin-platform-with-desert

또한 동일한 gem과 동일한 버전을 모두 설치하는 데 도움이 되는 geminstaller를 사용하는 것이 좋습니다.

http://geminstaller.rubyforge.org/

저는 명령줄에서 SVN을 사용하지만 TortiseSVN에 더 익숙하다면 RadRails 및 NetBeans와 같이 SVN이 잘 통합된 IDE를 사용해 볼 수도 있습니다.IDE에는 Tortise와 매우 유사한 그래픽 SVN 관리자가 있습니다. cmd 라인에서 작업하려면 간단한 10분 SVN 튜토리얼을 찾으면 됩니다.

나는 Rapid SVN에 대해 들어본 적이 없으며 일반 SVN 도구는 항상 나와 함께 작동했으며 폴더 잠금 문제가 거의 발생하지 않았습니다.

Orion은 서로 다른 OS 간에 공유할 때 판매된 gem을 다시 빌드해야 한다고 언급했습니다. gems:build rake 작업을 사용하여 자동으로 다시 빌드할 수 있습니다.

먼저 명령줄에서 svn을 알아냅니다.그만큼 svn-book 온라인 상태입니다.svn status 또는 svn commit -m "blah"를 수행하는 것은 그리 어렵지 않습니다.대부분의 문제는 OS 기능을 사용하여 파일을 삭제하거나 이름을 바꾸는 경우 발생합니다.이를 위해 svn 명령을 사용하십시오.

다음으로, rapidsvn이 제대로 작동하지 않으면 svn-workbench를 사용해 보세요.말하기 싫지만, 제가 본 Linux svn GUI 도구 중 tortoisesvn만큼 좋은 도구는 없습니다.

플러그인과 svn이 문제입니다.라는 도구가 있습니다. 피스톤 그것은 그것을 정리하는 것을 목표로하지만 나는 그것을 사용하지 않습니다.내 Vendor/plugins 디렉토리에서 플러그인을 체크아웃합니다.내가 정말 원하는 새 버전이 나오면 믿을 수 있는 update_plugin bash 스크립트를 사용하여 플러그인을 업데이트합니다.

#!/bin/bash

#  reinstall the plugin in an svn friendly way
plugin="some_plugin"
plugin_url="http://some_server/some_plugin/trunk"

for f in site1 site2 site3
do
  echo $f
  cd ~/rails/$f

  svn delete vendor/plugins/$plugin
  rm -rf vendor/plugins/$plugin
  svn -m "remove $plugin" commit
  script/plugin install $plugin_url
  svn add vendor/plugins/$plugin
  svn -m "add $plugin" commit

done
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top