【问题标题】:How to require local library mysql2 in ruby project如何在 ruby​​ 项目中要求本地库 mysql2
【发布时间】:2018-12-22 20:11:33
【问题描述】:

我已使用捆绑程序“bundle install --path vendor/bundle”在我的项目中安装我的 gem mysql2。

我的 Gemfile 是这样的

source 'https://rubygems.org'
gem 'mysql2', '~> 0.3.20'

现在我想在我的 ruby​​ 脚本中使用这个 gem,但它不起作用。总是显示“没有这样的文件 mysql2”。

我的代码是这样的

require 'json'
    load_paths = Dir.pwd + "/vendor/bundle/ruby/2.5.0/gems/"
    $LOAD_PATH.unshift(*load_paths)
    require 'mysql2'

def lambda_handler(event:, context:)
    # # TODO implement
    @db_host  = "host"
    @db_user  = "user"
    @db_pass  = "pass"
    @db_name = "db"

    client = Mysql2::Client.new(:host => @db_host, :username => @db_user, :password => @db_pass, :database => @db_name)
    @cdr_result = client.query("SELECT count(*) from table_name")
    puts @cdr_result
    { statusCode: 200, body: JSON.generate('Hello from Lambda!') }

 end

错误是这样来的

Traceback (most recent call last):
        2: from replaceFile.rb:4:in `<main>'
        1: from /home/vagrant/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/home/vagrant/.rvm/rubies/ruby-2.5.0/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- mysql2 (LoadError)

我正在使用 ruby​​ 版本 = ruby​​ 2.5.0p0(2017-12-25 修订版 61468)[x86_64-linux]

【问题讨论】:

    标签: ruby


    【解决方案1】:

    仅使用选项是不够的:您需要配置 bundler 以便它可以记住它。这是documentation 所说的:

    Flags passed to bundle install or the Bundler runtime, such as --path foo or 
    --without production, are not remembered between commands. If these options 
    must be remembered, they must be set using bundle config (e.g., bundle config 
    path foo).
    

    在您这样做之前,bundler 将忽略您所做的本地安装,并仍然尝试像通常那样获取 gem,即不在 vendor/bundle 路径中。因此失败

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-12
      相关资源
      最近更新 更多