Как потребовать локальную библиотеку mysql2 в проекте ruby - PullRequest
0 голосов
/ 22 декабря 2018

Я использовал пакет "bundle install --path vendor / bundle", чтобы установить мой gem mysql2 в моем проекте.

Мой Gemfile был таким

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

Теперь я хочутребует этот драгоценный камень в моем скрипте ruby, но он не работает.Всегда показывает «нет такого файла 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 ​​version = ruby2.5.0p0 (2017-12-25, редакция 61468) [x86_64-linux]

1 Ответ

0 голосов
/ 22 декабря 2018

Использование опций недостаточно: вам нужно настроить упаковщик, чтобы он мог его запомнить.Вот что говорит документация :

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).

До тех пор, пока вы не сделаете это, упаковщик будет игнорировать локальную установку, которую вы сделали, и все равно будет пытаться получить гемы, как обычно, т.е.в пути vendor/bundle.Отсюда и провал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...