An adapter to connect to Snowflake databases using Sequel. This provides proper types for returned values, as opposed to the ODBC adapter.
Add this line to your application's Gemfile:
gem 'sequel-snowflake'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install sequel-snowflake
You'll also need unixODBC (if on Linux/macOS) and the appropriate Snowflake ODBC driver in order to use this adapter. Follow the Snowflake documentation on their ODBC Driver here before proceeding.
After installing, you may need to configure simba.snowflake.ini
and set
DriverManagerEncoding
to "UTF-16", the default encoding for unixODBC. If
unixODBC was built specifically with the DSQL_WCHART_CONVERT
flag, then
Snowflake's default of "UTF-32" is fine as-is.
When establishing the connection, specify :snowflake
as the adapter to use.
DB = Sequel.connect(adapter: :snowflake,
drvconnect: conn_str)
In order to run specs, you'll need a Snowflake account. A connection string should be
provided as an environment variable SNOWFLAKE_CONN_STR
. For example, on macOS,
our connection string would resemble:
DRIVER=/opt/snowflake/snowflakeodbc/lib/universal/libSnowflake.dylib;
SERVER=<account>.<region>.snowflakecomputing.com;
DATABASE=<database>;
WAREHOUSE=<warehouse>;
SCHEMA=<schema>;
UID=<user>;
PWD=<password>;
CLIENT_SESSION_KEEP_ALIVE=true;
The test will create a temporary table on the specified database to run tests on, and this will
be taken down either via the after(:each)
blocks or when the connection is closed.
We have two workflows included in this project:
-
Ruby (
ruby.yml
): This runs the specs for this gem against Ruby 3.0 and 3.1. Note that this requires the secretSNOWFLAKE_CONN_STR
to be set (see above for example connection string), as we need to connect to Snowflake to run tests. These specs will be run for every pull request, and is run after every commit to those branches. -
Ruby Gem (
gem-push.yml
): This builds and pushes this gem to RubyGems, acting only on successful pushes to themain
branch. Note that this workflow requires aRUBYGEMS_AUTH_TOKEN
secret to be set to authenticate with RubyGems.
- Fork it ( https://github.com/vendasta/sequel-snowflake/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request