我知道这样的问题很少,但似乎没有问题解决我的问题。
我有一个我想要运行的脚本 - my_script.rb
我使用ruby-2.0.0-p353
和rubygems 2.2.2
我已经通过rvm
安装了它。当切换到使用我定制的宝石集时,gem env
说:
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.2
- RUBY VERSION: 2.0.0 (2013-11-22 patchlevel 353) [x86_64-linux]
我在my_script.rb中使用:
#!/usr/bin/env ruby
# -*- coding: utf-8 -*-
require 'mysql2'
我已经通过bundler安装了宝石,宝石列表说:
Installing i18n (0.6.9)
Installing multi_json (1.8.2)
Installing activesupport (3.2.8)
Installing builder (3.0.4)
Installing activemodel (3.2.8)
Installing activerecord (3.2.8)
Installing treetop (1.4.15)
Installing mime (0.2.0)
Installing mysql2 (0.3.14)
Using bundler (1.3.5)
Your bundle is complete!
It was installed into ./vendor/bundle
注意:my_script.rb
和/vendor/bundle
位于同一目录
现在问题:
那为什么要说:
kernel_require.rb:55:in `require': cannot load such file -- mysql2 (LoadError)
当我尝试使用./my_script
更新
对自己的更新:)
如果发生此错误,请尝试使用bundle exec
运行脚本,因为这是在bundle中安装gem的主要目的:)
我一直在运行脚本的方式与我在服务器上使用的方式相同,但所以我忘记了最明显和最合乎逻辑的方法 - 使用bundle exec ./my_script.rb
运行它,因为这是此主要目标;)< / p>
答案 0 :(得分:1)
您已经通过捆绑包安装了它们,因此您应该让捆绑商需要宝石。将以下内容添加到脚本的顶部:
require 'bundler'
Bundler.require
希望它有所帮助。