Rails 앱을 조사 중입니다. prod 서버에 특정 gem의 두 가지 버전이 설치되어 있습니다. prod 앱이 사용중인 버전을 어떻게 알 수 있나요?
Rails 앱을 조사 중입니다. prod 서버에 특정 gem의 두 가지 버전이 설치되어 있습니다. prod 앱이 사용중인 버전을 어떻게 알 수 있나요?
답변:
Rails 3 및 Rails 4에서는 bundle show
Rails 2에서는 rake gems
어떤 gem, 의존성, 버전이 설치되고 고정되어 있는지 출력합니다.
bundle show | grep gem_name
. 나침반 예 :bundle show | grep compass
번 들러를 사용하는 경우 다음에서 버전을 가져올 수 있습니다.
bundle show [gemname]
bundle info [gemname]
대신 사용하십시오 .
이 정보를 찾고 분류하는 데 예상보다 오래 걸렸기 때문에 다른 사람들이 볼 수 있도록 여기에 게시하고 싶었습니다. 또한 Rails 3에 대해 이것을 약간 명확히하고 싶었습니다.
스크립트 / 정보가 rake about
세부 정보 로 대체되었습니다 . here . Rails 3의 모든 커맨드 라인 변경 사항에 관심이 있다면 여기 에서 찾을 수 있습니다 .
rake gems
Rails 3에서는 작동하지 않습니다. 대신 bundle show
예를 들어, 모든 버전의 gem을 파일에 저장하여 볼 수 있습니다.
gem list > all_gems.txt
Rails 앱이 다음과 함께 사용중인 버전을 확인할 수 있습니다.
bundle show > project_gems.txt
Vim과 같은 편집기를 사용하면 vimdiff를 사용하여 변경 사항을 쉽게 확인할 수 있습니다.
gem list <gemname>
일치하는 모든 보석이 표시됩니다.
gem list rack
그러면 출력은 다음과 같습니다.
*** LOCAL GEMS ***
rack (1.6.4)
rack-mount (0.6.14)
rack-test (0.6.3, 0.6.2, 0.5.7)
script/about
사용중인 핵심 Rails 및 Rack gem의 버전이 무엇인지 알려줄 것입니다. 이상적으로를 살펴보면 config/environment.rb
다음과 같은 섹션이 있어야합니다.
# Specify gems that this application depends on and have them installed with rake gems:install
# config.gem "bj"
# config.gem "hpricot", :version => '0.6', :source => "http://code.whytheluckystiff.net"
# config.gem "sqlite3-ruby", :lib => "sqlite3"
# config.gem "aws-s3", :lib => "aws/s3"
운 좋게도 앱 작성자는 필요한 모든 gem과 버전을 거기에 포함 시켰을 것입니다. 그러나 버전은이 파일에서 선택 사항이며 궁극적으로 경험이없는 개발자가require 'rubygems'; require 'some_random_thing'
주어진 파일의 맨 위에 를 없습니다.
gem이 필요하지만 버전이 지정되지 않은 경우 입력 gem list
하여 시스템에있는 모든 gem의 모든 버전을 볼 수 있습니다 . 기본적으로 사용 가능한 최신 버전을 사용합니다.
bundle exec gem which gem_name
아마도 사용할 수 있습니다.
$› bundle exec gem which rails
/Users/xxxx/.rvm/gems/ruby-2.1.2@gemset/gems/railties-4.1.7/lib/rails.rb
gem which gem_name