Exasol i Ruby

Hej czy zna ktos moze jakies biblioteki (o ile istnieja) ktore umozliwiaja polaczenie sie z baza danych Exasol poprzez Ruby?

Chcialby sie polaczyc z ta baza za pomoca aplikacji Rails. Do polaczenia uzywam drivera jdbc14.jar. Z baza lacze sie uzywajaca URL jak jdbc:exa:192.162.235.84…86:8563 poprzez port 8563. Jak moglbym skonfigurowac ttakie polaczenie z baza danych uzywajac Ruby i rails 3?

znalazlem przyklad dla Javy:

import java.sql.*; import com.exasol.jdbc.*; public class jdbcsample { public static void main(String[] args) { try { Class.forName("com.exasol.jdbc.EXADriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { Connection con=null; con = DriverManager.getConnection( "jdbc:exa:192.168.6.11..14:8563;schema=sys", "sys", "exasol" ); Statement stmt=null; stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM CAT"); System.out.println("Schema SYS contains:"); while(rs.next()) { String str1 = rs.getString("TABLE_NAME"); String str2 = rs.getString("TABLE_TYPE"); System.out.println(str1 + ", " + str2); } stmt.close(); con.close(); } catch (SQLException e) { e.printStackTrace(); } } }

No to jeśli masz przykłąd w Javie, i to wszystko co w sieci znalazłeś, wychodzi na to że musisz użyć JRuby i drivera dla Javy. Współpracę z ActiveRecord widzę raczej kiepsko.

Hej, no to zaczynam swoja przygode z JRuby no i napotkalem pierwszy problem.

Stworzylem aplikacje (jruby 1.6.3 (ruby-1.8.7-p330) (2011-07-07 965162f) (Java HotSpot™ Server VM 1.6.0_26) [linux-i386-java], Rails 3.0.9). Moj GemFile wyglada tak:

[code]source ‘http://rubygems.org

gem ‘rails’, ‘3.0.9’

platforms :ruby do
gem ‘sqlite3’
end

platforms :jruby do
gem ‘activerecord-jdbc-adapter’

gem ‘jdbc-sqlite3’, :require => false

gem ‘jruby-openssl’

end

gem ‘mechanize’
gem ‘json’
gem ‘yajl-ruby’[/code]
Nie wiem czy dobrze tutaj umiescilem gemy mechanize, json i yajl ale jak umiesczam je w sekcji :ruby nie instaluja sie za pomoca bundle install (dlaczego?)

w konsoli (rails c) polecenie require ‘mechanize’ zwraca mi nil pomimo tego ze gem ten jest zainstalowany:

[code]gem list

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.9)
actionpack (3.0.9)
activemodel (3.0.9)
activerecord (3.0.9)
activerecord-jdbc-adapter (1.2.1)
activerecord-jdbcsqlite3-adapter (1.2.1)
activeresource (3.0.9)
activesupport (3.2.0, 3.0.9)
arel (2.0.10)
bouncy-castle-java (1.5.0146.1)
builder (3.0.0, 2.1.2)
bundler (1.0.21)
domain_name (0.5.2)
erubis (2.6.6)
i18n (0.6.0, 0.5.0)
jdbc-sqlite3 (3.7.2)
jruby-launcher (1.0.12 java)
jruby-openssl (0.7.5)
json (1.6.5 java)
mail (2.2.19)
mechanize (2.1)
mime-types (1.17.2)
multi_json (1.0.4)
net-http-digest_auth (1.2)
net-http-persistent (2.3.3)
nokogiri (1.5.0 java)
ntlm-http (0.1.1)
polyglot (0.3.3)
rack (1.2.5)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.9)
railties (3.0.9)
rake (0.8.7)
rdoc (3.12)
thor (0.14.6)
treetop (1.4.10)
tzinfo (0.3.31)
unf (0.0.4)
unf_ext (0.0.4)
webrobots (0.0.13)
yajl-ruby (1.1.0)[/code]

Nie mam pojęcia jaki jest problem z Mechanize. Jeśli całą aplikację będziesz odpalać tylko i wyłąćznie na JRuby (a zapewne tak będzie), pozbądź się wogóle sekcji “platforms” z Gemfie.

[quote]PLATFORMS (:platforms)
If a gem should only be used in a particular platform or set of platforms, you can specify them. Platforms are essentially identical to groups, except that you do not need to use the --without install-time flag to exclude groups of gems for other platforms.

There are a number of Gemfile platforms:

ruby
C Ruby (MRI) or Rubinius, but NOT Windows
ruby_18
ruby AND version 1.8
ruby_19
ruby AND version 1.9
mri
Same as ruby, but not Rubinius
mri_18
mri AND version 1.8
mri_19
mri AND version 1.9
rbx
Same as ruby, but only Rubinius (not MRI)
jruby
JRuby
mswin
Windows
mingw
Windows ‘mingw32’ platform (aka RubyInstaller)
mingw_18
mingw AND version 1.8
mingw_19
mingw AND version 1.9[/quote]

Jezeli masz zamiar robic cos wiecej z ta baza to mozesz napisac adapter do data_objects, wtedy bedziesz mogl uzywac data mapper’a

Nie jestem zaawansowanym programista, znasz moze jakies przyklady takich adapterow?

W zasadzie potrzebuje polaczenia z ta baza i wykonac kilka zapytan na takiej bazie. Chyba ze ma ktos ochote na stworzenie takiego adaptera (stworzenie repozytorium dla takiego projektu) no i utworzenie takiego kodu. Robie to tylko w celach naukowych.

rozszerzasz abstrakcyjny adapter: https://github.com/datamapper/do/tree/master/do_jdbc , np: https://github.com/datamapper/do/tree/master/do_mysql lub np ten, dosc prosty, https://github.com/datamapper/do/tree/master/do_h2 . musisz nadpisac metode sluzaca do pobierania polaczenia (budowania URI) + prawdopodobnie nadpisac metode od konwersji

ok, dziekuje poczytam i sprobuje

Powinny Cie interesowac pliki z tego katalogu https://github.com/datamapper/do/tree/master/do_mysql/ext-java/src/main/java/do_mysql , reszta to (ZTCP) default.

Hej,

stworzylem sobie przyklad polaczenia z baza Exasol w Javie:

import java.sql.*; import com.exasol.jdbc.*; public class jdbcsample { public static void main(String[] args) { try { Class.forName("com.exasol.jdbc.EXADriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { Connection con=null; con = DriverManager.getConnection( "jdbc:exa:192.168.235.84..86:8563", "lwlodarczyk", "*********" ); Statement stmt=null; stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT max(created_at) as DANE FROM ids.track_affiliate_responses"); System.out.println("Schema SYS contains:"); while(rs.next()) { String str1 = rs.getString("DANE"); System.out.println(str1); } stmt.close(); con.close(); } catch (SQLException e) { e.printStackTrace(); } } }
Po dluzszych namyslach stwierdzilem ze nie chce tworzyc Railsowej aplikacji lecz aplikcaje GUI. Aplikacja taka wykorzystywalaby wlasnie polaczenie z baza Exasol za pomoca drivera jdbc. I tutaj mam pytanie: co najlepiej uzywac w takim przypadku? Czy nadal musze uzywac datamappera aby stworzyc taka GUI aplikacje w Ruby nie Jruby? Czy jest to wogole mozliwe? Czy musze stworzyc adapter dla polaczenia sie z baza exasol podobny jak do_h2. Zainstalowalem ten adapter do_h2 ale nie wiem gdzie mam nadpisac metode konwershi i tworzenia URI. Czy bezposrednio w zainstalowanym gemie do_h2?