2012-10-11 4 views
3

나는 장고로 실행되는 Heroku의 Python 앱을 가지고 있습니다. 앱이 실행되고 완벽하게 작동합니다. 푸시의 처음 몇 라인은 다음과 같이 :Heroku의 python 앱에 보석 번들 설치

(venv)➜ djangoproject git:(development) ✗ git push 
Counting objects: 33, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (21/21), done. 
Writing objects: 100% (21/21), 1.96 KiB, done. 
Total 21 (delta 15), reused 0 (delta 0) 

-----> Heroku receiving push 
-----> Python/Django app detected 
... 

내가 다이노 (특히, 나침반)에 보석 프로그램을 설치해야합니다.

Heroku의 지침은 루트 디렉토리에 GemfileGemfile.lock에 필수 보석을 제공하는 것입니다.

(venv)➜ djangoproject git:(development) ✗ git push 
Counting objects: 33, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (21/21), done. 
Writing objects: 100% (21/21), 1.96 KiB, done. 
Total 21 (delta 15), reused 0 (delta 0) 

-----> Heroku receiving push 
-----> Ruby app detected (NOTE: this is paraphrased) 
... 

파이썬/장고 응용 프로그램과 사이트를 실행하는 동안 나는 루비 보석을 설치할 수있는 방법이 있나요 :이 제공하는 즉시로, 그러나, Heroku가 앱이 루비 응용 프로그램입니다 생각?

+0

가 어디 Heroku가 워드 프로세서에서 이것이다 :

그래서, 나침반 내 경우에 Rakefile은 같다? – jdotjdot

답변

2

명시 적으로 heroku config:add BUILDPACK_URL=https://github.com/heroku/heroku-buildpack-python.git

를 사용하여 파이썬 buildpack을 선택해보십시오 아직 검출 프로세스를 수행하지만 내 생각 (?) 당신이 명시 적으로 이전 또는 대신 어떤 다른 사람을 시도하는 선택한 buildpack를 실행하고, 이후 아직 파이썬 응용 프로그램이 설치되어 있다면 제대로 작동합니다.

config : add를 실행 한 후 Heroku에서 슬러그를 다시 빌드해야합니다. 현재는 git를 통해 실제 코드 변경을 수행해야만 할 수 있습니다. 실제 변경 사항이 없으면 빈 git 커밋을 만들 수 있습니다. git commit --allow-empty -m "Empty commit"

--buildpack 명령 줄 옵션을 사용하여 새 프로젝트를 만들 수도 있습니다.

+0

브릴리언트 답변! 사용자 정의 buildpack을 설정하면 내 루트에'Gemfile'을 유지하면서 Python/Django dyno를 사용할 수 있습니다. 유감스럽게도 기본 heroku buildpack이 찾지 않고 자동으로 Gemfiles를 설치하는 것처럼 보입니다. 나는 기본 buildpack을 fork하고'builder'를 실행하려고 시도 할 것입니다. – thatcanadian

+0

좋은 계획처럼 들립니다. Ruby 빌드 팩의 코드를 활용할 수도 있습니다. –

+0

@thatcanadian 실제로 그 일을 처리 했습니까? –

1

내가 같은 문제로 실행하고이 나를 위해 일한 : https://github.com/ddollar/heroku-buildpack-multi

작동 원리 :

    명시 적으로 사용 buildpack이 "다"를 사용하고자하는 그에게 Heroku에게
  1. 은 "Heroku가 config : add BUILDPACK_URL = ... "명령
  2. 루트 디렉토리에 사용하려는 다양한 buildpack의 git URL을 나열하는 .buildpacks 파일을 만듭니다. 저는 파이썬과 루비 빌드 팩을 사용했습니다.
  3. 자식에게 Heroku에 푸시 모든 buildpacks을보고는 익숙해

또한 파이썬 buildpack가 추가 사용자 정의 작업을 수행하는 데 사용할 수있는 후크의 몇 가지를 가지고 언급 할 가치가있다. bin/pre_compile 파일이나 bin/post_compile 파일을 생성하면,이 스크립트는 메인 컴파일 단계 직전/직후에 파이썬 빌드 팩에 의해 호출 될 것입니다. 따라서 이러한 훅을 사용하여 Ruby 또는 기타 종속성을 설치하십시오. 그러나 IMO를 사용하면 Ruby의 자체 빌드 팩에 Ruby 종속성을 설치하는 것이 더 쉽습니다.

1

루비 및 파이썬 종속성을 모두 빌드 할 수있는 사용자 정의 buildpack을 사용해야합니다.

  1. heroku config:add BUILDPACK_URL=https://github.com/mandest/heroku-buildpack-rubypython
  2. 로컬 설치 (
  3. Gemfile.lock 파일을 작성하는) 당신의 Gemfile 및 Gemfile을 눌러 프로젝트를 실행 번들에 Gemfile을 추가합니다.heroku에 잠금

먼저 ruby를 설치 한 다음 번들 설치를 실행하고 python 및 모든 deps를 requirements.txt 파일에 설치해야합니다.

내 경우에는 루비 라이브러리를 사용하여 일부 명령을 실행하고 싶었습니다. 이름이 SASS/COMPASS입니다. 그렇게하기 위해서는 두 가지 옵션이 있습니다. 첫 번째 것은 저장소 위에 포크를 올려 빌드에 명령을 추가하는 것입니다 (이 방법은 heroku를 실행하는 것보다 필요한 모든 권한을가집니다 ...).

두 번째 옵션은 Rakefile을 추가하고 해당 내용을 rake assets:precompile task에 지정하는 것입니다.

require 'yaml' 
require 'pathname' 
require 'rspec/core/rake_task' 
include FileUtils 


namespace 'assets' do 
    desc 'Updates the stylesheets generated by Sass/Compass' 
    task :precompile do 
    print %x(compass compile --time) 
    end 
end