在ruby程序中,有一个单独的Gem文件,里面包含如下定义:
source "https://rubygems.org"
gem "typhoeus"
gem "json"
gem "pg"
gem "google_drive" , "2.1.11"
gem "mandrill-api"
如果出于某种原因我不想要这个 gem 文件,那么在 ruby 脚本中,我需要为所有库添加 require, 比如:
require typhoeus
require json
require pg
require google_drive, 2.1.11
require mandrill-api
这行得通吗?
最佳答案
Gemfile 的目的可能会有所帮助,这样您就可以确保您的代码可以通过使用 bundler 来工作。这允许您运行 bundle install
这将安装 gems 以与您将用于代码的当前版本的 ruby 一起工作。它还将添加一个 Gemfile.lock
文件,这是在您的版本控制中提交的一个好主意,以确保您有一个工作堆栈,其中 gems 和 ruby 版本都兼容。
如果您只需要脚本中的文件,则无法保证这些 gems 实际安装在该脚本运行器的范围内。因此,通过使用 Gemfile
和 Gemfile.lock
并使用 bundler ,您可以为您的代码库提供可移植性。
更新
根据@engineersmnky 的评论,您可以使用此语法指定 gem 版本,只要安装了这些 gem,它就应该可以工作。您首先需要确保在您的终端中安装该版本:
gem install google_drive -v 2.1.11
然后你可以在你的 ruby 文件中这样做
require 'rubygems'
gem 'google_drive', '2.1.11';
require 'google_drive'
require 'typhoeus'
require 'json'
require 'pg'
require 'mandrill-api'
关于ruby - 我们需要同时需要 require 和 Gemfile 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55364429/