9

我在 Ubuntu 10.04 上,我必须推送到 Heroku 的应用程序有一个 Gemfile.lock,这个应用程序是由另一个程序员开发的。

当我使用bundle install命令时,这会安装必要的 gem 来运行应用程序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
4

4 回答 4

7

是否bundle install在我的 Gemfile 或 Gemfile.lock 中获取特定的宝石?

bundle install首先查看,然后查看以生成有效的 gem 列表,检查,尝试解决依赖关系,然后安装/更新 gem。

我的 Gemfile 和 Gemfile.lock 不一样。

它们不需要相同。是一个特定文件,用于在运行时保持 gem 的状态bundle install/update

我必须删除 Gemfile.lock 吗?

你可以,但随后bundle install会再次生成。然后,您可能真的会丢失和破坏所有 gem 依赖项,并且可能需要手动解决它们。

作为调查程序,您可以将旧的复制到一个僻静的地方,然后重新生成,并与

于 2014-02-03T12:15:20.507 回答
5

建议保留Gemfile.lock.

Gemfile.lock跟踪所有 gem 之间的依赖关系,并具有要使用的确切 gem 版本。

如果您在多个位置部署相同的项目,这是确保所有副本都具有相同副本的明确方法,gem因此每台机器上的环境都是相同的。

没有它,bundler将安装最新版本的 gem,如果新版本的 gem 不支持您正在使用的功能/格式,这可能会破坏事情。

如需进一步阅读GemfileGemfile.lock,请查看

于 2014-02-03T12:10:40.170 回答
2

Gemfile.lock具有要使用的宝石的确切版本。其中一些不会在您的文件中提及,Gemfile并将bundler参考特定版本的锁定文件。

如果您删除锁定文件,它将使用本地 gem(如果存在),否则下载最新版本的 gem。

于 2014-02-03T12:10:18.860 回答
0

如果您从操作系统更改,我会建议这样做。我得到了一个在 Windows 上创建的代码库,并且总是向 Heroku 推送我一直收到警告,因为 Heroku 服务器在 Linux 上运行,所以在我删除文件并重新生成它之后,我摆脱了所有可能出现崩溃的警告。例如,在 Windows 上,您必须参考 gem tzinfo,这在 Linux 上是不必要的,因为它在操作系统上。

于 2019-08-10T04:37:23.457 回答