복붙노트

[RUBY-ON-RAILS] 번들 간부 레이크하거나 갈퀴를 사용?

RUBY-ON-RAILS

번들 간부 레이크하거나 갈퀴를 사용?

나는 레이크 데시벨 같은 단지 레이크 명령을 사용하여 레일을 배운 : 마이그레이션을; 그러나, 나는 대신 일반 레이크의 ... 번들 간부 레이크를 사용한다는 것을 읽었다. 지금은 사용할에 대해 혼동하고있다.

나는 간부 레이크 대신에 그냥 일반 레이크 번들 사용 일 또는 그냥 기본 일해야 하는가? 어떤 통찰력이 많이 주시면 감사하겠습니다! 감사!

해결법

  1. ==============================

    1.번들 간부는 번들의 컨텍스트에서 명령을 실행합니다.

    번들 간부는 번들의 컨텍스트에서 명령을 실행합니다.

    즉, 그것은 당신의 Gemfile에 규정 된 보석을 사용합니다. 대부분의 시간, 번들 간부 레이크 foo를 실행하는 것은 당신이 당신의 Gemfile 같이 전체 시스템을 설치 한 동일한 보석을 가지고 특히, 당신은 단지 레이크 foo는 실행 한 경우와 동일한 결과가 있습니다. 그러나 일부 응용 프로그램은 시스템 전체 설치 한 것보다 보석의 다른 버전을 지정할 수 있으며, 그 정확한 보석 및 버전 올바르게 실행할 수 있도록 할 수 있습니다. 그냥 번들 간부없이 실행하면, 당신은 몇 가지 이상한 오류가 발생할 수 있습니다.

    번들 간부 보증을 사용하여 프로그램은 희망이 프로그램의 제작자는 희망이없이 제대로 실행되지해야 의미가에서 실행하고자하는 환경을 의미 gemfile에 명기 된 환경으로 실행될 때 어떤 이상한 설정하면 컴퓨터에 있습니다.

    그것은 기본적으로 프로그램이 실행되고있는 환경을 표준화. 이것은 피할 버전 지옥을하는 데 도움이 삶을 더욱 편리하게합니다.

    추가 정보를 원하시면 http://bundler.io/v1.3/man/bundle-exec.1.html를 참조하십시오.

  2. ==============================

    2.$ 번들 간부 레이크 DB : 마이그레이션 레이크의 버전이 Gemfile에 지정된 용도는 레이크 작업 DB를 실행합니다 : 마이그레이션합니다.

    $ 번들 간부 레이크 DB : 마이그레이션 레이크의 버전이 Gemfile에 지정된 용도는 레이크 작업 DB를 실행합니다 : 마이그레이션합니다.

    그러나 Gemfile에 지정된 레이크 보석이 없습니다! 네,하지만 레이크 보석은 다른 보석의 종속성으로 설치 - Gemfile.lock의 모습을. 규칙이 있어야합니다 그래서 : Gemfile.lock에 지정된 레이크의 버전을 사용합니다.

    그러나 Gemfile.lock는 특정 버전을 지정하지 않습니다 - 그것은 X · Y보다 버전 이상을 지정합니다! 그런 규칙해야합니다 : 현재 gemset에 설치 레이크의 버전을 사용합니다.

    $ 레이크 DB : 마이그레이션 일반적으로, 명령 줄에서 명령을 실행할 때, 예를 들어, PATH 환경 변수에 지정된 디렉토리 목록에서 명령, 시스템 검색을 긁어. 명령을 포함하는 첫 번째 디렉토리가 사용되는 명령의 버전입니다. 어떤 디렉토리를 확인하려면, 당신은 할 수 있습니다 :

    $ which rake
    

    당신이 실행한다면,

    $ rake db:migrate
    

    그건 당신이 설치 번들로 설치가 아닌 다른 레이크 보석을 사용할 수 있습니다. 그러나, 시스템이 번들 간부와 같은 레이크 버전을 찾더라도, 레이크 소스 코드에 필요한 보석은 프로젝트의 gemset 외부 장소에서 검색됩니다. 따라서, 여러 가지 방법이 바로이있다 :

    $ rake db:migrate
    

    일을 망칠 수 있습니다.

    당신이 RVM을 사용하는 경우 루비 온 레일즈 튜토리얼 도서 (무료 온라인), 3.6 절에 따르면, 1.11.x + 당신은 번들 간부와 서문 명령에 필요하지 않습니다.

  3. ==============================

    3.번들 간부없이 exacutable을 실행하는 젬은 시스템에 설치된 보석의 최신 버전을 가져 오는 것입니다.

    번들 간부없이 exacutable을 실행하는 젬은 시스템에 설치된 보석의 최신 버전을 가져 오는 것입니다.

    번들을 추가 간부 접두사 대신 보석 파일에 정의 된 버전을 사용하여 실행됩니다 수단 귀하의 Gemfile.lock의 컨텍스트에서 실행 파일 실행해야합니다.

  4. from https://stackoverflow.com/questions/8275885/use-bundle-exec-rake-or-just-rake by cc-by-sa and MIT license