我想将rubygems.org中的gem设置为我的项目的某个子文件夹,如"/gems"
,然后通过require
从脚本中使用它。请帮我解决。
答案 0 :(得分:0)
首选方法是使用标准方案:使用二进制文件构建gem
,将其打包并在使用时根据gemspec
自行下载所有依赖项。如果出于某种原因上述情况不适合您,其中一个选项是:
•为脚本创建gem
;
•您指定path where to install dependencies:
bundle install --path=vendor/gems
•在您的脚本中使用require
代替require_relative
,因为在目标计算机上没有本地捆绑包的配置文件,指向正确的文件夹;
•当您的脚本完成后,您可以打包所有内容,包括宝石。
答案 1 :(得分:0)
进入ruby项目的正常方法是设置Gemfile并使用bundler (see link for more info)来处理项目所需的gem,而不必考虑它们存储的位置
但是,如果真的无法运送自己的gem目录,例如因为您的生产系统绝对无法访问互联网,您可以这样做:
gem install
的相应选项将安装重定向到该目录中)使用以下常量在项目的根目录中创建ruby文件:
PROJECT_DIR = __dir__
GEMS_DIR = File.join(PROJECT_DIR, 'gems')
现在您可以要求您的宝石链接require File.join(GEMS_DIR, <gem_name>)
尽管如此,如果可能的话,你应该考虑使用bundler。
编辑:通过gem install
gems
目录gem uninstall pg
gem install -i <path_to_projects_gems_dir> pg
答案 2 :(得分:0)
gem install -i ./ pg
ROOT = File.expand_path('..', __FILE__)
ENV['GEM_PATH'] = File.join(ROOT, './')
require 'pg'
puts 'Version of libpg: ' + PG.library_version.to_s