2017-02-09 4 views
1

rbenv 및 Bundler를 사용하여 환경을 구성하는 모든 설정에서 지침은 항상 번들을 gem install bundler을 사용하여 시스템 보석으로 설치합니다. 종종 rbenv-bundler rbenv plugin을 추천하지만 the maintainers of rbenv discourage this도 추천합니다.레일을 시스템 보석으로 설치해야합니까?

레일즈를 설치하는 방법은 설명되어 있지 않습니다. 새로운 Rails 프로젝트를 초기화하면 bundler를위한 기본 Gemfile이 생성됩니다. 그러나 Rails 프로젝트를 초기화하려면 레일스를 설치해야합니다. 디렉토리를 만들고 레일스를 포함하는 기본 Gemfile을 작성하고 bundle install을 실행 한 다음 Rails를 현재 디렉토리로 초기화하는 것은 이상하고 심지어 잘못된 것입니다. 실제로, 나는 그것이 잘 작동하더라도, 그것이 잘 작동하는지는 의심 스럽다.

그래서 레일을 gem install rails으로 시스템 보석으로 설치해야합니까? 그렇다면 rbenv를 사용하여 여러 버전의 Rails를 어떻게 관리 할 수 ​​있습니까?

답변

2

레일을 시스템 보석으로 설치하는 것이 합리적입니다.

mkdir rails_app 
cd rails_app 
vi Gemfile # Edit it to include a rails version you need 
bundle --path vendor # Wait for bundler to finish 
bundle exec rails new ./ 

마지막 단계 물어 것 :

rbenv 또는 당신이 사용하는 다른 루비 버전 관리를 엉망으로하지 않고, 아래 Gemfile이있는 디렉토리에서 새 레일 응용 프로그램을 만드는 (초기화)하는 간단한 단계는 Overwrite /path/to/rails_app/Gemfile? (enter "h" for help) [Ynaqdh] . y을 입력하여 기본 Rails Gemfile 내용을 가져옵니다.

참고 : 위 단계에서는 시스템 전체 범위에 보석을 설치하지 않도록 레일 vendor 디렉토리 (레일스 앱 폴더 내부)를 지정합니다.

+0

의미가 있습니다. 디렉토리를 만들고, Gemfile을 만들고, 그 Gemfile을 날려 버리는 작업은 약간 중복 된 작업입니다. 몇 가지 명령이 더 있습니다. 그러나 그것은 Bundler를 제외한 모든 것이 공급 업체 (또는 원하는 디렉토리) 디렉토리에 살도록합니다. –

+0

시스템 젬으로 설치하는 것은 실제로 나쁜 생각입니다. 아마도 사용자 정의 된 도커 인스턴스를 사용하지 않는 한 가능합니다. 시스템 라이브러리와 사용자 영역 라이브러리를 분리하는 것이 좋습니다. 레일 애플리케이션은 기본적으로 OS 관점에서 사용자 영역입니다. 따라서 배포 사용자를위한 rbenv가 더 좋습니다. – Tilo

+0

그렇기 때문에이 예제에서는 앱 내부의 공급 업체 폴더에 보석을 설치합니다. 개인적으로 저는 Foreman/Heroku Local을 사용하여 다른 서비스 (데이터베이스, Redis 등)를 관리하여 응용 프로그램과 격리시킵니다. –

2

응답은 아니오입니다. 시스템 보석으로 레일을 설치하지 마십시오. 프로젝트 폴더를 만들고 .ruby-version 파일을 추가하고이 파일에 원하는 루비 버전을 추가하십시오 (예 : 2.3.0). rbenv는이 파일에 지정된 버전을 사용하며 시스템의 루비가 아닙니다.

이제이 디렉토리에서 gem install bundler을 만들고 Gemfile을 만들고 레일즈 버전을 추가 할 수 있습니다. 이제 bundle install을 실행하고 RAILS 트랙을 굴려 .....