желательно удалить Gemfile.lock?

Я использую Ubuntu 10.04, приложение, которое я должен отправить на Heroku, имеет Gemfile.lock, это приложение было разработано другим программистом.

Когда я использую команду bundle install, это устанавливает необходимые драгоценные камни для запуска приложения с помощью rails s.

Принимает ли bundle install определенные драгоценные камни в моем Gemfile или Gemfile.lock?

Мой Gemfile и Gemfile.lock не совпадают.

Нужно ли удалять Gemfile.lock?

Это мой Gemfile:

source 'http://rubygems.org'

#ruby '1.9.3'

gem 'rails', "= 3.1.11"
#gem "rake", "= 0.8.7"
gem 'racc'
# gem 'sqlite3'
#gem 'acts_as_list', '>= 0.1.0'
#gem 'acts_as_tree'
gem 'paperclip'
gem 'aws-s3', :require => 'aws/s3'
gem 'aws-sdk'
gem 'gravatar_image_tag'
gem 'kaminari'
gem 'jquery-rails', '~> 2.1'
gem 'RedCloth', '>= 3.301'
gem 'carmen', :git => 'git://github.com/alvatarc/carmen.git', :branch => '0.2.x'
#gem 'carmen'
gem 'sass-rails'
gem 'http_accept_language'
gem 'right_aws'
gem 'exception_notification'

group :development do
  gem 'sqlite3-ruby', :require => 'sqlite3'
  gem 'rspec-rails', '= 2.7.0'
  gem 'rspec-core', '= 2.7.1'
  gem 'rspec'
  #gem 'annotate-models'
  gem 'faker'
  gem 'therubyracer'
end

group :test do
  gem 'sqlite3-ruby', :require => 'sqlite3'
  gem 'rspec-rails', '= 2.7.0'
  gem 'rspec-core', '= 2.7.1'
  gem 'rspec'
  gem 'webrat'
  gem 'spork', '= 0.9.0.rc9'
  gem 'factory_girl_rails'
end

group :production do
  gem 'pg'
  gem 'uglifier'
end


# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19', :require => 'ruby-debug'

Это мой Gemfile.lock:

GIT
  remote: git://github.com/alvatarc/carmen.git
  revision: af7bcd574e2f0ed6d59b46662a8be939a1e083c0
  branch: 0.2.x
  specs:
    carmen (0.2.13)

GEM
  remote: http://rubygems.org/
  specs:
    RedCloth (4.2.9)
    actionmailer (3.1.11)
      actionpack (= 3.1.11)
      mail (~> 2.3.3)
    actionpack (3.1.11)
      activemodel (= 3.1.11)
      activesupport (= 3.1.11)
      builder (~> 3.0.0)
      erubis (~> 2.7.0)
      i18n (~> 0.6)
      rack (~> 1.3.6)
      rack-cache (~> 1.2)
      rack-mount (~> 0.8.2)
      rack-test (~> 0.6.1)
      sprockets (~> 2.0.4)
    activemodel (3.1.11)
      activesupport (= 3.1.11)
      builder (~> 3.0.0)
      i18n (~> 0.6)
    activerecord (3.1.11)
      activemodel (= 3.1.11)
      activesupport (= 3.1.11)
      arel (~> 2.2.3)
      tzinfo (~> 0.3.29)
    activeresource (3.1.11)
      activemodel (= 3.1.11)
      activesupport (= 3.1.11)
    activesupport (3.1.11)
      multi_json (~> 1.0)
    arel (2.2.3)
    aws-s3 (0.6.3)
      builder
      mime-types
      xml-simple
    aws-sdk (1.9.2)
      json (~> 1.4)
      nokogiri (>= 1.4.4)
      uuidtools (~> 2.1)
    builder (3.0.4)
    climate_control (0.0.3)
      activesupport (>= 3.0)
    cocaine (0.5.1)
      climate_control (>= 0.0.3, < 1.0)
    diff-lcs (1.1.3)
    erubis (2.7.0)
    exception_notification (3.0.1)
      actionmailer (>= 3.0.4)
    execjs (1.4.0)
      multi_json (~> 1.0)
    factory_girl (4.2.0)
      activesupport (>= 3.0.0)
    factory_girl_rails (4.2.1)
      factory_girl (~> 4.2.0)
      railties (>= 3.0.0)
    faker (1.1.2)
      i18n (~> 0.5)
    gravatar_image_tag (1.1.3)
    hike (1.2.2)
    http_accept_language (1.0.2)
    i18n (0.6.4)
    jquery-rails (2.2.1)
      railties (>= 3.0, < 5.0)
      thor (>= 0.14, < 2.0)
    json (1.7.7)
    kaminari (0.14.1)
      actionpack (>= 3.0.0)
      activesupport (>= 3.0.0)
    libv8 (3.11.8.17)
    mail (2.3.3)
      i18n (>= 0.4.0)
      mime-types (~> 1.16)
      treetop (~> 1.4.8)
    mime-types (1.23)
    multi_json (1.7.2)
    nokogiri (1.5.9)
    paperclip (3.4.1)
      activemodel (>= 3.0.0)
      activerecord (>= 3.0.0)
      activesupport (>= 3.0.0)
      cocaine (~> 0.5.0)
      mime-types
    pg (0.15.1)
    polyglot (0.3.3)
    racc (1.4.9)
    rack (1.3.10)
    rack-cache (1.2)
      rack (>= 0.4)
    rack-mount (0.8.3)
      rack (>= 1.0.0)
    rack-ssl (1.3.3)
      rack
    rack-test (0.6.2)
      rack (>= 1.0)
    rails (3.1.11)
      actionmailer (= 3.1.11)
      actionpack (= 3.1.11)
      activerecord (= 3.1.11)
      activeresource (= 3.1.11)
      activesupport (= 3.1.11)
      bundler (~> 1.0)
      railties (= 3.1.11)
    railties (3.1.11)
      actionpack (= 3.1.11)
      activesupport (= 3.1.11)
      rack-ssl (~> 1.3.2)
      rake (>= 0.8.7)
      rdoc (~> 3.4)
      thor (~> 0.14.6)
    rake (10.0.4)
    rdoc (3.12.2)
      json (~> 1.4)
    ref (1.0.4)
    right_aws (3.0.5)
      right_http_connection (>= 1.2.5)
    right_http_connection (1.3.0)
    rspec (2.7.0)
      rspec-core (~> 2.7.0)
      rspec-expectations (~> 2.7.0)
      rspec-mocks (~> 2.7.0)
    rspec-core (2.7.1)
    rspec-expectations (2.7.0)
      diff-lcs (~> 1.1.2)
    rspec-mocks (2.7.0)
    rspec-rails (2.7.0)
      actionpack (~> 3.0)
      activesupport (~> 3.0)
      railties (~> 3.0)
      rspec (~> 2.7.0)
    sass (3.2.8)
    sass-rails (3.1.7)
      actionpack (~> 3.1.0)
      railties (~> 3.1.0)
      sass (>= 3.1.10)
      tilt (~> 1.3.2)
    spork (0.9.0.rc9)
    sprockets (2.0.4)
      hike (~> 1.2)
      rack (~> 1.0)
      tilt (~> 1.1, != 1.3.0)
    sqlite3 (1.3.7)
    sqlite3-ruby (1.3.3)
      sqlite3 (>= 1.3.3)
    therubyracer (0.11.4)
      libv8 (~> 3.11.8.12)
      ref
    thor (0.14.6)
    tilt (1.3.7)
    treetop (1.4.12)
      polyglot
      polyglot (>= 0.3.1)
    tzinfo (0.3.37)
    uglifier (2.0.1)
      execjs (>= 0.3.0)
      multi_json (~> 1.0, >= 1.0.2)
    uuidtools (2.1.3)
    webrat (0.7.3)
      nokogiri (>= 1.2.0)
      rack (>= 1.0)
      rack-test (>= 0.5.3)
    xml-simple (1.1.2)

PLATFORMS
  ruby

DEPENDENCIES
  RedCloth (>= 3.301)
  aws-s3
  aws-sdk
  carmen!
  exception_notification
  factory_girl_rails
  faker
  gravatar_image_tag
  http_accept_language
  jquery-rails (~> 2.1)
  kaminari
  paperclip
  pg
  racc
  rails (= 3.1.11)
  right_aws
  rspec
  rspec-core (= 2.7.1)
  rspec-rails (= 2.7.0)
  sass-rails
  spork (= 0.9.0.rc9)
  sqlite3-ruby
  therubyracer
  uglifier
  webrat

person Antonio Morales    schedule 03.02.2014    source источник


Ответы (4)


Принимает ли bundle install определенные драгоценные камни в моем Gemfile или Gemfile.lock?

bundle install сначала просматривает gemfile.lock, а затем просматривает gemfile для создания допустимого списка гемов, проверяет, пытается разрешить зависимости, а затем устанавливает/обновляет геморы.

Мой Gemfile и Gemfile.lock не совпадают.

Они не должны быть одинаковыми. gemfile.lock< /strong> — это специальный файл для хранения состояния драгоценных камней во время запуска bundle install/update.

Нужно ли удалять Gemfile.lock?

Можно, но тогда bundle install сгенерирует gemfile.lock еще раз. Тогда вы действительно можете потерять и сломать все зависимости гема, и вам может потребоваться разрешить их вручную.

В качестве процедуры расследования вы можете скопировать старые gemfile.lock в укромное место, затем заново создайте gemfile.lock и сравните оба с diff

person Малъ Скрылевъ    schedule 03.02.2014
comment
Чтобы снова сгенерировать Gemfile.lock, нужно ли использовать только команду bundle install? - person Antonio Morales; 03.02.2014
comment
@FrankyCutty да, оболочка bundle update должна запускаться с существующим Gemfile.lock, но я говорил о сравнении =) - person Малъ Скрылевъ; 03.02.2014

Рекомендуется сохранить файл Gemfile.lock.

Gemfile.lock отслеживает все зависимости между гемами и имеет точные версии гемов для использования.

Если вы развертываете один и тот же проект в нескольких местах, это определенный способ гарантировать, что все ваши копии будут иметь одну и ту же копию gems, и, следовательно, среда будет идентичной на каждой машине.

Без него bundler установит последние версии драгоценных камней, и это может привести к поломке, если более новая версия драгоценного камня не поддерживает функцию/формат, в котором вы работаете.

Для дальнейшего чтения Gemfile и Gemfile.lock ознакомьтесь с этим и это

person Anshul Goyal    schedule 03.02.2014

Gemfile.lock содержит точные версии используемых драгоценных камней. Некоторые из них не будут упомянуты в вашем Gemfile, а bundler будут ссылаться на файл блокировки для конкретной версии.

Если вы удалите файл блокировки, он либо будет использовать локальный драгоценный камень, если он есть, либо загрузит последнюю версию драгоценных камней.

person AshwinKumarS    schedule 03.02.2014
comment
Я не понимаю, какие местные жемчужины? - person Antonio Morales; 03.02.2014
comment
Локальные драгоценные камни, такие как установленные в вашей системе. Когда вы настраиваете свои приложения в новой системе, файл блокировки используется для загрузки точной версии драгоценных камней и ее зависимостей, поскольку драгоценные камни не будут уже установлены. - person AshwinKumarS; 03.02.2014

Если вы перейдете с ОС, я бы посоветовал так. Я получаю кодовую базу, созданную в Windows, и всегда это подталкивало к Heroku. Я продолжал получать предупреждения, поскольку серверы Heroku работают в Linux, поэтому после того, как я удалил файл и восстановил его, я избавился от всех этих предупреждений о возможных сбоях. Например, в Windows вы должны сделать ссылку на gem tzinfo, который в Linux не нужен, поскольку он находится в ОС.

person Eduardo Hernández    schedule 10.08.2019