Ruby on Rails
보석
수색…
비고
젬 파일 문서
성장할 것으로 예상되는 프로젝트의 경우 Gemfile
에 주석을 추가하는 것이 좋습니다. 그렇게하면 심지어 큰 설정에서도 이름이 자명하지 않고 2 년 전에 추가 한 경우에도 각 보석이 무엇을하는지 알 수 있습니다.
또한 특정 버전을 선택한 이유를 기억하고 나중에 버전 요구 사항을 다시 평가하는 데 도움이 될 수 있습니다.
예 :
# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'
보석이란 무엇입니까?
보석은 프로그래밍 언어 루비를위한 플러그인 또는 확장과 동일합니다.
철조망이라도 정확히 보석 일뿐입니다. 많은 보석은 레일이나 다른 보석 (그들은 보석에 달려있다) 위에 세워져 있거나 독립형이다.
Rails 프로젝트에서
젬 파일
Rails 프로젝트에는 Gemfile
이라는 파일이 Gemfile
. 여기에 프로젝트에 포함하고 사용하려는 보석을 추가 할 수 있습니다. 일단 추가되면 번 bundler
를 사용하여 보석을 설치해야합니다 (번들러 섹션 참조).
Gemfile.lock
이렇게하면 Gemfile.lock
이 새로 추가 된 보석과 그 의존성으로 업데이트됩니다. 이 파일은 사용 된 보석을 잠궈 서 해당 파일에 선언 된 특정 버전을 사용합니다.
GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)
이 예는 보석을위한 devise
. Gemfile.lock
에서 버전 4.0.3
을 선언하여 사용할 다른 버전의 머신이나 프로덕션 서버에 프로젝트를 설치할 때 알려줍니다.
개발
한 사람, 한 그룹 또는 전체 커뮤니티가 작품을 작성하고 유지합니다. 수행 된 작업은 일반적으로 특정 issues
가 issues
되거나 features
이 추가 된 후에 릴리스됩니다.
보통 릴리스는 Semantic Versioning 2.0.0 원칙을 따릅니다.
번들러
보석을 다루고 관리하는 가장 쉬운 방법은 bundler
를 사용하는 것입니다. Bundler 는 bower와 비슷한 패키지 관리자입니다.
번들러를 사용하려면 먼저 번들러를 설치해야합니다.
gem install bundler
번 Gemfile
하고 실행 한 Gemfile
추가하고 실행하면된다.
bundle
귀하의 단말기에. 이렇게하면 새로 추가 된 보석이 프로젝트에 설치됩니다. 문제가 발생하면 터미널에 프롬프트가 표시됩니다.
자세한 내용에 관심이 있으시면 문서를 살펴 보시기 바랍니다.
젬 파일
시작하려면, gemfiles에는 RubyGems 서버의 URL 형태로 적어도 하나의 소스가 필요합니다.
bundle init
을 실행하여 기본 rubygems.org 소스로 Gemfile을 생성하십시오. SSL을 사용하여 서버에 대한 연결을 확인할 수 있도록 https를 사용하십시오.
source 'https://rubygems.org'
그런 다음 버전 번호를 포함하여 필요한 보석을 선언하십시오.
gem 'rails', '4.2.6'
gem 'rack', '>=1.1'
gem 'puma', '~>3.0'
> = 1.0과 같은 대부분의 버전 지정자는 자명합니다. 지정자 ~>는 특별한 의미가 있습니다. ~ 2.0.3은> 2.0.3 및 <2.1과 동일합니다. ~ 2.1은> 2.1 및 <3.0과 동일합니다. ~ 2.2.beta는 2.2.12와 같은 시험판 버전과 일치합니다.
Git 저장소는 repo에 하나 이상의 유효한 보석이 들어있는 한 유효한 보석 소스입니다. 체크 아웃 할 대상을 :tag
, :branch
또는 :ref
. 기본값은 master
분기입니다.
gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'
파일 시스템에서 압축을 푼 보석을 직접 사용하려면 : path 옵션을 gem의 파일이 들어있는 경로로 설정하기 만하면됩니다.
gem 'extracted_library', :path => './vendor/extracted_library'
종속성을 그룹으로 지정할 수 있습니다. 그룹은 설치시 ( --without
사용) 무시하거나 Bundler.require
사용하여 한 번에 모두 필요할 수 있습니다.
gem 'rails_12factor', group: :production
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'dotenv-rails'
end
당신과 함께 Gemfile에 루비의 필요한 버전을 지정할 수 있습니다 ruby
. Gemfile이 다른 Ruby 버전에로드되면 Bundler는 설명과 함께 예외를 발생시킵니다.
ruby '2.3.1'
보석 세트
RVM(Ruby Version Manager)
을 사용하는 경우 각 프로젝트에 gemset
을 사용하는 것이 좋습니다. gemset
은 보석을 서로 분리하는 데 사용할 수있는 컨테이너입니다. 프로젝트 당 보석 gemset
만들면 다른 모든 프로젝트를 깨지 않고 한 프로젝트의 보석 (및 보석 버전)을 변경할 수 있습니다. 각 프로젝트는 자신의 보석에 대해서만 걱정할 필요가 있습니다.
RVM
은 루비 인터프리터 당 @global gemset
제공합니다 (> = 0.1.8). 주어진 루비에 대해 @global gemset
에 설치 한 젬은 그 루비와 함께 생성 한 다른 모든 젬 세트에서 사용할 수 있습니다. 이것은 모든 프로젝트가 특정 루비 인터프리터 설치에 대해 동일한 설치된 보석을 공유 할 수있게하는 좋은 방법입니다.
보석 세트 만들기
이미 ruby-2.3.1
설치되어 있고 다음 명령을 사용하여 선택했다고 가정하십시오.
rvm use ruby-2.3.1
이제이 루비 버전을위한 gemset을 생성하십시오 :
rvm gemset create new_gemset
여기서 new_gemset
은 new_gemset
의 이름입니다. 루비 버전에서 사용 가능한 gemsets 목록을 보려면 :
rvm gemset list
모든 루비 버전의 보석 목록 :
rvm gemset list_all
목록에서 gemset을 사용하려면 ( new_gemset
을 사용하려는 gemset이라고 가정 new_gemset
) :
rvm gemset use new_gemset
다른 루비 버전으로 이동하려면 gemset으로 루비 버전을 지정할 수도 있습니다.
rvm use ruby-2.1.1@new_gemset
특정 루비 버전에 대한 기본 gemset을 지정하려면 :
rvm use 2.1.1@new_gemset --default
설치 한 모든 보석을 보석에서 꺼내려면 다음과 같이하여 비울 수 있습니다 :
rvm gemset empty new_gemset
하나의 루비에서 다른 루비로 gemset을 복사하려면 다음을 수행하십시오.
rvm gemset copy 2.1.1@rails4 2.1.2@rails4
보석을 삭제하려면 다음 단계를 따르세요.
rvm gemset delete new_gemset
현재 gemset 이름을 보려면 :
rvm gemset name
글로벌 gemset에 젬을 설치하려면 :
rvm @global do gem install ...
루비 설치 중 Gemset 초기화하기
새로운 루비를 설치할 때 RVM은 두 개의 보석 세트 (기본 빈 gemset 및 전역 보석 세트)를 생성 할뿐만 아니라 사용자가 편집 할 수있는 파일 세트를 사용하여 설치할 보석을 결정합니다.
~/.rvm/gemsets
에서 작업하는 ~/.rvm/gemsets
은 설치할 루비 문자열을 기반으로 트리 계층 구조를 사용하여 global.gems
및 default.gems
를 검색합니다. ree-1.8.7-p2010.02
의 예제를 사용하여 rvm은 다음 파일을 확인하고 가져옵니다.
~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems
예를 들어 ~/.rvm/gemsets/global.gems
를 다음 두 행을 추가하여 편집 한 경우 :
bundler
awesome_print
새 루비를 설치할 때마다이 두 보석이 글로벌 gemset에 설치됩니다. default.gems
및 global.gems
파일은 일반적으로 rvm을 업데이트하는 동안 덮어 씁니다.