title: How to correctly load a gem extension in AWS Lambda
body: <p>I'm having trouble working through a gem load error on AWS Lambda.</p>
  
  <pre><code>{
    "errorMessage": "LoadError: libpq.so.5: cannot open shared object file: No such file or directory - /var/task/vendor/bundle/ruby/2.5.0/gems/pg-1.1.4/lib/pg_ext.so",
    "errorType": "Function&lt;Sequel::AdapterNotFound&gt;",
    "stackTrace": [
      "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
      "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/pg-1.1.4/lib/pg.rb:4:in `&lt;top (required)&gt;'",
      "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
      "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/adapters/postgres.rb:6:in `&lt;top (required)&gt;'",
      "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
      "/var/lang/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/database/connecting.rb:88:in `load_adapter'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/database/connecting.rb:17:in `adapter_class'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/database/connecting.rb:45:in `connect'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/core.rb:121:in `connect'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/core.rb:399:in `adapter_method'",
      "/var/task/vendor/bundle/ruby/2.5.0/gems/sequel-5.16.0/lib/sequel/core.rb:406:in `block (2 levels) in def_adapter_method'",
      "/var/task/lib/warehouse/loader.rb:5:in `connection'",
      "/var/task/lib/warehouse/loader.rb:24:in `initialize'",
      "/var/task/lib/warehouse/update.rb:43:in `new'",
      "/var/task/lib/warehouse/update.rb:43:in `block in handle'",
      "/var/task/lib/warehouse/update.rb:42:in `each'",
      "/var/task/lib/warehouse/update.rb:42:in `handle'",
      "/var/task/lambda.rb:11:in `handler'"
    ]
  }
  </code></pre>
  
  <p>I am using the Sequel library to make a PSQL connection from AWS Lambda, but it seems that the function cannot find the so file. I <em>have</em> packaged the dependencies in <code>vendor/bundle</code>, built in Ubuntu on CodeBuild, and verified that the .so file is present in the resulting artifacts uploaded to lambda. I've also edited the $LOAD_PATH, but that doesn't seem to help.</p>
  
  <p>Anyone else encountered this difficulty? Any further tips on resolving or debugging?</p>