Ruby脚本无法加载通过bundler安装的gem

Ruby脚本无法加载通过bundler安装的gem,ruby,bundler,Ruby,Bundler,我试图在我的ruby脚本中包含ruby mysql gem。我已经使用bundler安装了gem,但是当我运行bundle exec./mysql\u connector时,我收到了错误/mysql\u connector:4:“require”:无法加载这样的文件--ruby-mysql(LoadError)。你能帮我解决什么问题吗 我所做的 在我的主目录中安装了rails。 我没有服务器的root访问权限,因此我已按照此处的说明在本地目录中安装了rails: 为我的应用程序创建了一个目录。

我试图在我的ruby脚本中包含ruby mysql gem。我已经使用bundler安装了gem,但是当我运行
bundle exec./mysql\u connector
时,我收到了错误
/mysql\u connector:4:“require”:无法加载这样的文件--ruby-mysql(LoadError)
。你能帮我解决什么问题吗

我所做的

在我的主目录中安装了rails。 我没有服务器的root访问权限,因此我已按照此处的说明在本地目录中安装了rails:

为我的应用程序创建了一个目录。 我的应用程序位于我的主目录中,位于名为
connector
的文件夹中。它有一个如下所示的文件:

source 'https://rubygems.org'
gem 'ruby-mysql'
调用
捆绑安装

Using ruby-mysql 2.9.14
Using bundler 1.11.2
Bundle complete! 1 Gemfile dependency, 2 gems now installed.
Bundled gems are installed into ./vendor/bundle.
向我的脚本添加依赖项。我的脚本位于connector/mysql\u connector中,内容如下:

#!/home/dcox/bin/ruby
require 'rubygems'
require 'bundler/setup'
require 'ruby-mysql'
使脚本可执行。我发现您需要使用可执行文件运行
bundle exec
,因此我按照此处的说明使脚本可执行:

运行脚本。我使用
bundle exec mysql\u连接器执行脚本,请参见:

/home/dcox/bin/mysql_connector:4:in `require': cannot load such file -- ruby-mysql (LoadError)
    from /home/dcox/bin/mysql_connector:4:in `<main>'
接下来,我查看了ruby mysql的位置:

dcox@analytics1:~/connector$ bundle show ruby-mysql
/data/home/dcox/connector/vendor/bundle/ruby/2.1.0/gems/ruby-mysql-2.9.14
显然,我的
连接器/供应商/捆绑包路径不在$LOAD\u路径上。我可以加上它,但我有一种感觉,我在这里错过了一些简单的东西,因为bundler应该可以工作,只要你按照说明,对吗


非常感谢您的任何建议或帮助!谢谢

您的文件应调用
Bundler.setup


更好的是,如果您改为调用
Bundler.require(:default)
它将为您设置并要求Gemfile中的所有gem。

您的文件应调用
Bundler.setup


更好的是,如果您改为调用Bundler.require(:default)
它将为您设置并要求Gemfile中的所有gem。

如果您只需要此特定gem,
需要“mysql”
应该可以工作(例如)。

如果您只需要此特定gem,
需要“mysql”
应该可以工作(例如).

你看过ruby mysql的github中的说明了吗?你看过ruby mysql的github中的说明了吗?这成功了!但这是否意味着我绕过了Bundler?我的同事向我解释说,由于脚本名为
mysql.rb
,这就是我在ruby脚本中必须
要求的!从这里开始粘贴,因为它直接说明了使用
bundle exec
可以为您带来什么
Exec运行一个命令,允许它访问包中的gems。在使用bundle exec时,您可以要求并调用捆绑的gems,就像它们安装在系统范围的RubyGems存储库中一样。
因此,您不会通过使用
require
绕过捆绑程序。如果您不使用
bundle exec
来运行脚本,除非
ruby mysql
在您的系统范围内,否则您的脚本将无法需要它。这很有效!但这是否意味着我绕过了Bundler?我的同事向我解释说,由于脚本名为
mysql.rb
,这就是我在ruby脚本中必须
要求的!从这里开始粘贴,因为它直接说明了使用
bundle exec
可以为您带来什么
Exec运行一个命令,允许它访问包中的gems。在使用bundle exec时,您可以要求并调用捆绑的gems,就像它们安装在系统范围的RubyGems存储库中一样。
因此,您不会通过使用
require
绕过捆绑程序。如果您不使用
bundle exec
来运行脚本,除非
ruby mysql
在您的系统范围内,否则您的脚本将无法使用它。好的,尽管上面的答案有效,我还是想尝试一下,因为我仍然不确定到底发生了什么,我有兴趣了解更多。我有一行
需要“bundler/setup”
,这与有一行
bundler.setup
不同吗?我还尝试使用上述两个建议执行该文件,但收到了相同的错误:\好的,尽管上面的答案有效,我还是想尝试一下,因为我仍然不确定到底发生了什么,我有兴趣了解更多。我有一行
需要“bundler/setup”
,这与有一行
bundler.setup
不同吗?我还尝试使用上述两个建议执行该文件,但收到了相同的错误:\
dcox@analytics1:~/connector$ bundle show ruby-mysql
/data/home/dcox/connector/vendor/bundle/ruby/2.1.0/gems/ruby-mysql-2.9.14