2010-01-26 2 views
5

현재 레일즈 앱 배포 프로세스를 가능한 한 자동화하고 CI 서버의 깔끔한 빌드가 테스트 서버에서 자동 배포를 시작할 수 있도록하려고합니다.capistrano로 일회성 배포 작업을 처리하는 방법은 무엇입니까?

그러나 다음과 같은 시나리오에서 약간의 문제가 발생했습니다. friendly_id gem을 응용 프로그램에 추가했습니다. 모든 필요한 테이블을 만드는 마이그레이션이 있습니다. 그러나이 테이블을 채우려면 레이크 작업을 호출해야합니다.

이제이 레이크 작업은 한 번만 호출하면되므로 배포 스크립트에 추가하면 과도한 작업이됩니다.

이상적으로 마이그레이션과 같은 것을 찾고 있지만 데이터베이스 대신 배포 중에 호출해야하는 스크립트를 추적해야합니다. 그런 짐승은 이미 존재합니까?

답변

1

나는 당신이 원하는 것을 정확히 수행 할 수는 없지만, 원격 서버에서 작업을 수행 할 수 있어야한다면, 항상 캐 피스트 라노를 통해 레이크를 사용할 수 있습니다.

여기에 그 질문이 있습니다 : How do I run a rake task from Capistrano?,이 문서는 http://ananelson.com/said/on/2007/12/30/remote-rake-tasks-with-capistrano/에 링크되어 있습니다.

편집 : 데이터베이스를 변경하지 않고 레이크 작업을 호출하는 마이그레이션을 만들 수 있는지 궁금합니다. Rake::Task["task:name"].invoke. 가치가있는 시도?

+0

물론 데이터 이동을 위해 마이그레이션을 사용합니다. db 스키마를 변경할 필요가 없습니다. – wesgarrison

+0

그런 다음 변경 사항을 실행하는 레이크 작업을 호출하는 마이그레이션을 만들어보십시오. 그게 작동해야합니다 ... – jonnii

+0

와우, 난 그냥 이것에 대한 마이 그 레이션을 사용하여 고려하지 않았다. 나는 항상 "이주"를 "데이터베이스"와 동일시했다. – AGraefe

1

rake 작업을 실행하는 것이 friendly_id를 사용하는 것으로 간주됩니다. 물론, 테이블을 만들었지 만, 아직 끝나지 않았습니다! 실제로 마이그레이션하기 전에 몇 가지 데이터 업데이트를해야합니다.

마이그레이션에서 rake 태스크를 호출하십시오. 그러면 기존 데이터가 업데이트되고 새로운 기록은 향후 앱 논리에 의해 처리됩니다.

2

모양이 after_party 인 것처럼 보이며 원하는대로 할 수 있습니다.

관련 문제