ruby - 我们需要同时需要 require 和 Gemfile 吗?

标签 ruby

在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 实际安装在该脚本运行器的范围内。因此,通过使用 GemfileGemfile.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/

相关文章:

ruby - 正则表达式:如何替换除单词/模式序列之外的所有字符?

ruby-on-rails - View 中的 Rails Helpers - Rails 中未定义的局部变量或方法

Ruby 没有将 Fixnum 隐式转换为 String (TypeError)

ruby - 是否有与 Ruby Timeout 模块等效的 Groovy?

ruby-on-rails - 如何修复 "Your Ruby version is 1.9.3, but your Gemfile specified 2.0.0"

Ruby Win32Api 获取单字符非阻塞

ruby - 赛璐珞代码测试方法

ruby - 将所有 xpath 结果收集到 ruby​​ 中的数组中

ruby-on-rails - 如何获取具有 min has_many 记录的记录(加入数据)

ruby-on-rails - 选项.获取。我不明白