Ruby 中的“Gemfile”在哪里?

Posted

技术标签:

【中文标题】Ruby 中的“Gemfile”在哪里?【英文标题】:Where is the "Gemfile" in Ruby? 【发布时间】:2016-09-28 08:14:10 【问题描述】:

我经常在 Internet 上的文档中看到“将其放入 Gemfile”。我不知道这个“Gemfile”在哪里以及是什么。如果我安装了一个 gem,那么我已经安装了它。谁比“Gemfile”更需要? Gemfile 在哪里或什么是,为什么要使用它?

【问题讨论】:

【参考方案1】:

Gemfile 在 Rails 项目中,对于 Ruby 运行 gem environment 以了解您的 gem 环境:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.8
  - RUBY VERSION: 2.2.1 (2015-02-26 patchlevel 85) [i686-linux]
  - INSTALLATION DIRECTORY: /home/gagan/.rvm/gems/ruby-2.2.1
  - RUBY EXECUTABLE: /home/gagan/.rvm/rubies/ruby-2.2.1/bin/ruby
  - EXECUTABLE DIRECTORY: /home/gagan/.rvm/gems/ruby-2.2.1/bin
  - SPEC CACHE DIRECTORY: /home/gagan/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/gagan/.rvm/rubies/ruby-2.2.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /home/gagan/.rvm/gems/ruby-2.2.1
     - /home/gagan/.rvm/gems/ruby-2.2.1@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/gagan/.rvm/gems/ruby-2.2.1/bin
     - /home/gagan/.rvm/gems/ruby-2.2.1@global/bin
     - /home/gagan/.rvm/rubies/ruby-2.2.1/bin
     - /usr/local/heroku/bin
     - /usr/lib/lightdm/lightdm
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /home/gagan/.rvm/bin
     - /home/gagan/.rvm/bin

请注意以下两个部分:

安装目录 宝石路径

【讨论】:

不仅在 Rails 中,在任何 Ruby gem 中。【参考方案2】:

Gemfile 是一个必须位于 Rails 项目根目录的文件。它用于描述 Ruby 程序的 gem 依赖关系。

gemfile 中的第一件事是告诉 Gemfile 在哪里寻找 gems 的来源。

源可以作为一个块调用,并且您的 gemfile 中可以有多个源。

source "https://my_awesome_source.com" do
  gem "my_gem"
  gem "my_other_gem"
end

这里有一些文档,您可以在其中阅读有关 gemfile 的更多信息 http://bundler.io/gemfile.html

【讨论】:

【参考方案3】:

Gemfile 位于您想要的任何位置 - 通常位于项目的主目录中,文件名为 Gemfile

拥有一个很方便,因为它允许您使用 Bundler 来管理您的项目需要运行哪些 gem 以及每个版本。

如果您没有使用 Bundler(您应该使用它!),那么您可以安装任何遇到 gem install X 的 gem,而忽略有关向 Gemfile 添加行的说明。

在此处了解更多信息:

http://bundler.io/gemfile.html http://bundler.io/man/gemfile.5.html

【讨论】:

好的,好的,谢谢。因为我有一个问题:如果我安装 gem“电池”,那么它就不起作用,如果我需要它并按照说明进行制作。因为在指令下站着“将此添加到您的 Gemfile:gem 'battery'”,“然后运行:bundle”。我该怎么办? @GluecklichesHuhn 请查看以下链接中的“入门”部分。我无法更好地解释它! bundler.io 谢谢。真的帮助我理解红宝石。我是新手【参考方案4】:

只需运行 gem update --system 即可。就这么简单!!!

【讨论】:

以上是关于Ruby 中的“Gemfile”在哪里?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 中的 Gemfile 和 Gemfile.lock 有啥区别

Ruby 和“您必须使用 OpenSSL 支持重新编译 Ruby 或更改 Gemfile 中的源代码”

在 Gemfile 中设置 ruby​​ 版本

在 Gemfile 中指定 ruby​​gem 时 ~> 和 >= 有啥区别?

在 Gemfile 和 .ruby-version Dotfile 中列出 Ruby 版本是一种不好的做法吗?

ruby 在Gemfile.lock中指定git分支