mondrian-olap 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +7 -0
  2. data/Changelog.md +38 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +302 -0
  5. data/VERSION +1 -1
  6. data/lib/mondrian/jars/commons-collections-3.2.jar +0 -0
  7. data/lib/mondrian/jars/commons-logging-1.1.1.jar +0 -0
  8. data/lib/mondrian/jars/commons-math-1.1.jar +0 -0
  9. data/lib/mondrian/jars/eigenbase-properties-1.1.2.jar +0 -0
  10. data/lib/mondrian/jars/eigenbase-resgen-1.3.1.jar +0 -0
  11. data/lib/mondrian/jars/eigenbase-xom-1.3.1.jar +0 -0
  12. data/lib/mondrian/jars/{javacup.jar → javacup-10k.jar} +0 -0
  13. data/lib/mondrian/jars/log4j-1.2.14.jar +0 -0
  14. data/lib/mondrian/jars/mondrian.jar +0 -0
  15. data/lib/mondrian/jars/olap4j-1.0.1.539.jar +0 -0
  16. data/lib/mondrian/olap.rb +2 -1
  17. data/lib/mondrian/olap/connection.rb +163 -32
  18. data/lib/mondrian/olap/cube.rb +163 -24
  19. data/lib/mondrian/olap/error.rb +57 -0
  20. data/lib/mondrian/olap/query.rb +52 -17
  21. data/lib/mondrian/olap/result.rb +298 -6
  22. data/lib/mondrian/olap/schema.rb +220 -29
  23. data/lib/mondrian/olap/schema_element.rb +31 -11
  24. data/lib/mondrian/olap/schema_udf.rb +331 -0
  25. data/lib/mondrian/olap/version.rb +5 -0
  26. data/spec/connection_role_spec.rb +130 -0
  27. data/spec/connection_spec.rb +36 -1
  28. data/spec/cube_spec.rb +137 -7
  29. data/spec/fixtures/MondrianTest.xml +4 -4
  30. data/spec/mondrian_spec.rb +53 -0
  31. data/spec/query_spec.rb +294 -11
  32. data/spec/rake_tasks.rb +8 -8
  33. data/spec/schema_definition_spec.rb +845 -26
  34. data/spec/spec_helper.rb +26 -17
  35. data/spec/support/matchers/be_like.rb +2 -2
  36. metadata +296 -237
  37. data/.rspec +0 -2
  38. data/Gemfile +0 -18
  39. data/README.rdoc +0 -221
  40. data/RUNNING_TESTS.rdoc +0 -66
  41. data/Rakefile +0 -46
  42. data/lib/mondrian/jars/commons-collections-3.1.jar +0 -0
  43. data/lib/mondrian/jars/commons-logging-1.0.4.jar +0 -0
  44. data/lib/mondrian/jars/commons-math-1.0.jar +0 -0
  45. data/lib/mondrian/jars/eigenbase-properties.jar +0 -0
  46. data/lib/mondrian/jars/eigenbase-resgen.jar +0 -0
  47. data/lib/mondrian/jars/eigenbase-xom.jar +0 -0
  48. data/lib/mondrian/jars/log4j-1.2.8.jar +0 -0
  49. data/lib/mondrian/jars/olap4j.jar +0 -0
  50. data/mondrian-olap.gemspec +0 -126
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --backtrace
data/Gemfile DELETED
@@ -1,18 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'nokogiri', '~> 1.5.0'
4
-
5
- group :development do
6
- gem 'jruby-openssl'
7
- gem 'jeweler', '~> 1.5.2'
8
- gem 'rdoc'
9
- gem 'rspec', '~> 2.5'
10
- gem 'autotest'
11
- gem 'jdbc-mysql'
12
- gem 'jdbc-postgres'
13
- gem 'jdbc-luciddb'
14
- gem 'jdbc-jtds'
15
- gem 'activerecord', '= 3.0.10'
16
- gem 'activerecord-jdbc-adapter', '= 1.1.1'
17
- gem 'activerecord-oracle_enhanced-adapter', :require => false
18
- end
@@ -1,221 +0,0 @@
1
- = mondrian-olap
2
-
3
- JRuby gem for performing multidimensional queries of relational database data using Mondrian OLAP Java library.
4
-
5
- == DESCRIPTION
6
-
7
- SQL language is good for doing ad-hoc queries from relational databases but it becomes very complicated when doing more complex analytical queries to get summary results. Alternative approach is OLAP (On-Line Analytical Processing) databases and engines that provide easier multidimensional analysis of data at different summary levels.
8
-
9
- One of the most popular open-source OLAP engines is Mondrian (http://mondrian.pentaho.com). Mondrian OLAP engine can be put in front of relational SQL database and it provides MDX multidimensional query language which is much more suited for analytical purposes.
10
-
11
- mondrian-olap is JRuby gem which includes Mondrian OLAP engine and provides Ruby DSL for creating OLAP schemas on top of relational database schemas and provides MDX query language and query builder Ruby methods for making analytical queries.
12
-
13
- == USAGE
14
-
15
- === Schema definition
16
-
17
- At first you need to define OLAP schema mapping to relational database schema tables and columns. OLAP schema consists of:
18
-
19
- * Cubes
20
-
21
- Multidimensional cube is a collection of measures that can be accessed by dimensions. In relational database cubes are stored in fact tables with measure columns and dimension foreign key columns.
22
-
23
- * Dimensions
24
-
25
- Dimension can be used in one cube (private) or in many cubes (shared). In relational database dimensions are stored in dimension tables.
26
-
27
- * Hierarchies and levels
28
-
29
- Dimension has at least one primary hierarchy and optional additional hierarchies and each hierarchy has one or more levels. In relational database all levels can be stored in the same dimension table as different columns or can be stored also in several tables.
30
-
31
- * Members
32
-
33
- Dimension hierarchy level values are called members.
34
-
35
- * Measures
36
-
37
- Measures are values which can be accessed at detailed level or aggregated (e.g. as sum or average) at higher dimension hierarchy levels. In relational database measures are stored as columns in cube table.
38
-
39
- * Calculated measures
40
-
41
- Calculated measures are not stored in database but calculated using specified formula from other measures.
42
-
43
- Read more about about defining Mondrian OLAP schema at http://mondrian.pentaho.com/documentation/schema.php.
44
-
45
- Here is example how to define OLAP schema and its mapping to relational database tables and columns using mondrian-olap:
46
-
47
- require "rubygems"
48
- require "mondrian-olap"
49
-
50
- schema = Mondrian::OLAP::Schema.define do
51
- cube 'Sales' do
52
- table 'sales'
53
- dimension 'Customers', :foreign_key => 'customer_id' do
54
- hierarchy :has_all => true, :all_member_name => 'All Customers', :primary_key => 'id' do
55
- table 'customers'
56
- level 'Country', :column => 'country', :unique_members => true
57
- level 'State Province', :column => 'state_province', :unique_members => true
58
- level 'City', :column => 'city', :unique_members => false
59
- level 'Name', :column => 'fullname', :unique_members => true
60
- end
61
- end
62
- dimension 'Products', :foreign_key => 'product_id' do
63
- hierarchy :has_all => true, :all_member_name => 'All Products',
64
- :primary_key => 'id', :primary_key_table => 'products' do
65
- join :left_key => 'product_class_id', :right_key => 'id' do
66
- table 'products'
67
- table 'product_classes'
68
- end
69
- level 'Product Family', :table => 'product_classes', :column => 'product_family', :unique_members => true
70
- level 'Brand Name', :table => 'products', :column => 'brand_name', :unique_members => false
71
- level 'Product Name', :table => 'products', :column => 'product_name', :unique_members => true
72
- end
73
- end
74
- dimension 'Time', :foreign_key => 'time_id', :type => 'TimeDimension' do
75
- hierarchy :has_all => false, :primary_key => 'id' do
76
- table 'time'
77
- level 'Year', :column => 'the_year', :type => 'Numeric', :unique_members => true, :level_type => 'TimeYears'
78
- level 'Quarter', :column => 'quarter', :unique_members => false, :level_type => 'TimeQuarters'
79
- level 'Month', :column => 'month_of_year', :type => 'Numeric', :unique_members => false, :level_type => 'TimeMonths'
80
- end
81
- hierarchy 'Weekly', :has_all => false, :primary_key => 'id' do
82
- table 'time'
83
- level 'Year', :column => 'the_year', :type => 'Numeric', :unique_members => true, :level_type => 'TimeYears'
84
- level 'Week', :column => 'weak_of_year', :type => 'Numeric', :unique_members => false, :level_type => 'TimeWeeks'
85
- end
86
- end
87
- measure 'Unit Sales', :column => 'unit_sales', :aggregator => 'sum'
88
- measure 'Store Sales', :column => 'store_sales', :aggregator => 'sum'
89
- end
90
- end
91
-
92
- === Connection creation
93
-
94
- When schema is defined it is necessary to establish OLAP connection to database. Here is example how to connect to MySQL database using the schema object that was defined previously:
95
-
96
- require "jdbc/mysql"
97
-
98
- olap = Mondrian::OLAP::Connection.create(
99
- :driver => 'mysql',
100
- :host => 'localhost,
101
- :database => 'mondrian_test',
102
- :username => 'mondrian_user',
103
- :password => 'secret',
104
- :schema => schema
105
- )
106
-
107
- === MDX queries
108
-
109
- Mondrian OLAP provides MDX query language. Read more about MDX at http://mondrian.pentaho.com/documentation/mdx.php.
110
- mondrian-olap allows executing of MDX queries, for example query for "Get sales amount and number of units (on columns) of all product families (on rows) sold in California during Q1 of 2010":
111
-
112
- result = olap.execute <<-MDX
113
- SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} ON COLUMNS,
114
- {[Products].children} ON ROWS
115
- FROM [Sales]
116
- WHERE ([Time].[2010].[Q1], [Customers].[USA].[CA])
117
- MDX
118
-
119
- which would correspond to the following SQL query:
120
-
121
- SELECT SUM(unit_sales) unit_sales_sum, SUM(store_sales) store_sales_sum
122
- FROM sales
123
- LEFT JOIN products ON sales.product_id = products.id
124
- LEFT JOIN product_classes ON products.product_class_id = product_classes.id
125
- LEFT JOIN time ON sales.time_id = time.id
126
- LEFT JOIN customers ON sales.customer_id = customers.id
127
- WHERE time.the_year = 2010 AND time.quarter = 'Q1'
128
- AND customers.country = 'USA' AND customers.state_province = 'CA'
129
- GROUP BY product_classes.product_family
130
- ORDER BY product_classes.product_family
131
-
132
- and then get axis and cells of result object:
133
-
134
- result.axes_count # => 2
135
- result.column_names # => ["Unit Sales", "Store Sales"]
136
- result.column_full_names # => ["[Measures].[Unit Sales]", "[Measures].[Store Sales]"]
137
- result.row_names # => e.g. ["Drink", "Food", "Non-Consumable"]
138
- result.row_full_names # => e.g. ["[Products].[Drink]", "[Products].[Food]", "[Products].[Non-Consumable]"]
139
- result.values # => [[..., ...], [..., ...], [..., ...]]
140
- # (three rows, each row containing value for "unit sales" and "store sales")
141
-
142
- === Query builder methods
143
-
144
- MDX queries could be built and executed also using Ruby methods in a similar way as ActiveRecord/Arel queries are made.
145
- Previous MDX query can be executed as:
146
-
147
- olap.from('Sales').
148
- columns('[Measures].[Unit Sales]', '[Measures].[Store Sales]').
149
- rows('[Products].children').
150
- where('[Time].[2010].[Q1]', '[Customers].[USA].[CA]').
151
- execute
152
-
153
- Here is example of more complex query "Get sales amount and profit % of top 50 products cross-joined with USA and Canada country sales during Q1 of 2010":
154
-
155
- olap.from('Sales').
156
- with_member('[Measures].[ProfitPct]').
157
- as('Val((Measures.[Store Sales] - Measures.[Store Cost]) / Measures.[Store Sales])',
158
- :format_string => 'Percent').
159
- columns('[Measures].[Store Sales]', '[Measures].[ProfitPct]').
160
- rows('[Products].children').crossjoin('[Customers].[Canada]', '[Customers].[USA]').
161
- top_count(50, '[Measures].[Store Sales]').
162
- where('[Time].[2010].[Q1]').
163
- execute
164
-
165
- See more examples of queries in spec/query_spec.rb.
166
-
167
- Currently there are query builder methods just for most frequently used MDX functions, there will be new query builder methods in next releases of mondrian-olap gem.
168
-
169
- === Cube dimension and member queries
170
-
171
- mondrian-olap provides also methods for querying dimensions and members:
172
-
173
- cube = olap.cube('Sales')
174
- cube.dimension_names # => ['Measures', 'Customers', 'Products', 'Time']
175
- cube.dimensions # => array of dimension objects
176
- cube.dimension('Customers') # => customers dimension object
177
- cube.dimension('Time').hierarchy_names # => ['Time', 'Time.Weekly']
178
- cube.dimension('Time').hierarchies # => array of hierarchy objects
179
- cube.dimension('Customers').hierarchy # => default customers dimension hierarchy
180
- cube.dimension('Customers').hierarchy.level_names
181
- # => ['(All)', 'Country', 'State Province', 'City', 'Name']
182
- cube.dimension('Customers').hierarchy.levels
183
- # => array of hierarchy level objects
184
- cube.dimension('Customers').hierarchy.level('Country').members
185
- # => array of all level members
186
- cube.member('[Customers].[USA].[CA]') # => lookup member by full name
187
- cube.member('[Customers].[USA].[CA]').children
188
- # => get all children of member in deeper hierarchy level
189
- cube.member('[Customers].[USA]').descendants_at_level('City')
190
- # => get all descendants of member in specified hierarchy level
191
-
192
- See more examples of dimension and member queries in spec/cube_spec.rb.
193
-
194
- == REQUIREMENTS
195
-
196
- mondrian-olap gem is compatible with JRuby versions 1.5 and 1.6 (have not been tested with earlier versions). mondrian-olap works only with JRuby and not with other Ruby implementations as it includes Mondrian OLAP Java libraries.
197
-
198
- mondrian-olap currently supports MySQL, PostgreSQL, Oracle, LucidDB and SQL Server databases. When using MySQL, PostgreSQL or LucidDB databases then install jdbc-mysql, jdbc-postgres or jdbc-luciddb gem and require "jdbc/mysql", "jdbc/postgres" or "jdbc/luciddb" to load the corresponding JDBC database driver. When using Oracle then include Oracle JDBC driver (ojdbc6.jar for Java 6) in CLASSPATH or copy to JRUBY_HOME/lib or require it in application manually. When using SQL Server you can choose between the jTDS or Microsoft JDBC drivers. If you use jTDS require "jdbc/jtds". If you use the Microsoft JDBC driver include sqljdbc.jar or sqljdbc4.jar in CLASSPATH or copy to JRUBY_HOME/lib or require it in application manually.
199
-
200
- == INSTALL
201
-
202
- Install gem with:
203
-
204
- gem install mondrian-olap
205
-
206
- or include in your project's Gemfile:
207
-
208
- gem "mondrian-olap"
209
-
210
- == LINKS
211
-
212
- * Source code: http://github.com/rsim/mondrian-olap
213
- * Bug reports / Feature requests: http://github.com/rsim/mondrian-olap/issues
214
- * General discussions and questions at: http://groups.google.com/group/mondrian-olap
215
-
216
- == LICENSE
217
-
218
- mondrian-olap is released under the terms of MIT license; see LICENSE.txt.
219
-
220
- Mondrian OLAP Engine is released under the terms of the Eclipse Public
221
- License v1.0 (EPL); see LICENSE-Mondrian.html.
@@ -1,66 +0,0 @@
1
- == Creating test database
2
-
3
- By default unit tests use MySQL database but PostgreSQL, Oracle and SQL Server databases are supported as well. Set MONDRIAN_DRIVER environment variable to "mysql" (default), "postgresql", "oracle", "luciddb", "mssql" (jTDS) or "sqlserver" (Microsoft JDBC) to specify database driver that should be used.
4
-
5
- If using MySQL, PostgreSQL or SQL Server database then create database user mondrian_test with password mondrian_test, create database mondrian_test and grant full access to this database for mondrian_test user. By default it is assumed that database is located on localhost (can be overridden with DATABASE_HOST environment variable).
6
-
7
- If using Oracle database then create database user mondrian_test with password mondrian_test. By default it is assumed that database orcl is located on localhost (can be overridden with DATABASE_NAME and DATABASE_HOST environment variables).
8
-
9
- If using LucidDB database then create schema MONDRIAN_TEST and create user MONDRIAN_TEST with password mondrian_test and with default schema MONDRIAN_TEST. By default it is assumed that database is located on localhost (can be overridden with DATABASE_HOST environment variable).
10
-
11
- See spec/spec_helper.rb for details of default connection parameters and how to override them.
12
-
13
- == Creating test data
14
-
15
- Install necessary gems with
16
-
17
- bundle install
18
-
19
- Create tables with test data using
20
-
21
- rake db:create_data
22
-
23
- or specify which database driver to use
24
-
25
- rake db:create_data MONDRIAN_DRIVER=mysql
26
- rake db:create_data MONDRIAN_DRIVER=postgresql
27
- rake db:create_data MONDRIAN_DRIVER=oracle
28
- rake db:create_data MONDRIAN_DRIVER=mssql
29
- rake db:create_data MONDRIAN_DRIVER=sqlserver
30
-
31
- In case of LucidDB data are not generated and inserted directly into database but are imported from MySQL mondrian_test database (because inserting individual records into LucidDB is very inefficient). Therefore at first generate test data with mysql (using default database settings) and then run data creation task for LucidDB.
32
-
33
- rake db:create_data MONDRIAN_DRIVER=mysql
34
- rake db:create_data MONDRIAN_DRIVER=luciddb
35
-
36
- == Running tests
37
-
38
- Run tests with
39
-
40
- rake spec
41
-
42
- or specify which database driver to use
43
-
44
- rake spec MONDRIAN_DRIVER=mysql
45
- rake spec MONDRIAN_DRIVER=postgresql
46
- rake spec MONDRIAN_DRIVER=oracle
47
- rake spec MONDRIAN_DRIVER=luciddb
48
- rake spec MONDRIAN_DRIVER=mssql
49
- rake spec MONDRIAN_DRIVER=sqlserver
50
-
51
- or also alternatively with
52
-
53
- rake spec:mysql
54
- rake spec:postgresql
55
- rake spec:oracle
56
- rake spec:luciddb
57
- rake spec:mssql
58
- rake spec:sqlserver
59
-
60
- You can also run all tests on all databases with
61
-
62
- rake spec:all
63
-
64
- == JRuby versions
65
-
66
- It is recommended to use RVM (http://rvm.beginrescueend.com) to run tests with different JRuby implementations. mondrian-olap is being tested with latest versions of JRuby 1.6 on Java 6.
data/Rakefile DELETED
@@ -1,46 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler'
3
- begin
4
- Bundler.setup(:default, :development)
5
- rescue Bundler::BundlerError => e
6
- $stderr.puts e.message
7
- $stderr.puts "Run `bundle install` to install missing gems"
8
- exit e.status_code
9
- end
10
-
11
- require 'rake'
12
-
13
- require 'jeweler'
14
- Jeweler::Tasks.new do |gem|
15
- gem.name = "mondrian-olap"
16
- gem.summary = "JRuby API for Mondrian OLAP Java library"
17
- gem.description = <<-EOS
18
- JRuby gem for performing multidimensional queries of relational database data using Mondrian OLAP Java library
19
- EOS
20
- gem.email = "raimonds.simanovskis@gmail.com"
21
- gem.homepage = "http://github.com/rsim/mondrian-olap"
22
- gem.authors = ["Raimonds Simanovskis"]
23
- end
24
- Jeweler::RubygemsDotOrgTasks.new
25
-
26
- require 'rspec/core/rake_task'
27
- RSpec::Core::RakeTask.new(:spec)
28
-
29
- RSpec::Core::RakeTask.new(:rcov) do |t|
30
- t.rcov = true
31
- t.rcov_opts = ['--exclude', '/Library,spec/']
32
- end
33
-
34
- task :default => :spec
35
-
36
- require 'rdoc/task'
37
- RDoc::Task.new do |rdoc|
38
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
39
-
40
- rdoc.rdoc_dir = 'doc'
41
- rdoc.title = "mondrian-olap #{version}"
42
- rdoc.rdoc_files.include('README*')
43
- rdoc.rdoc_files.include('lib/**/*.rb')
44
- end
45
-
46
- require 'spec/rake_tasks'
Binary file
@@ -1,126 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{mondrian-olap}
8
- s.version = "0.3.0"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Raimonds Simanovskis}]
12
- s.date = %q{2011-11-12}
13
- s.description = %q{JRuby gem for performing multidimensional queries of relational database data using Mondrian OLAP Java library
14
- }
15
- s.email = %q{raimonds.simanovskis@gmail.com}
16
- s.extra_rdoc_files = [
17
- "LICENSE-Mondrian.html",
18
- "LICENSE.txt",
19
- "README.rdoc"
20
- ]
21
- s.files = [
22
- ".rspec",
23
- "Changelog.md",
24
- "Gemfile",
25
- "LICENSE-Mondrian.html",
26
- "LICENSE.txt",
27
- "README.rdoc",
28
- "RUNNING_TESTS.rdoc",
29
- "Rakefile",
30
- "VERSION",
31
- "lib/mondrian-olap.rb",
32
- "lib/mondrian/jars/commons-collections-3.1.jar",
33
- "lib/mondrian/jars/commons-dbcp-1.2.1.jar",
34
- "lib/mondrian/jars/commons-logging-1.0.4.jar",
35
- "lib/mondrian/jars/commons-math-1.0.jar",
36
- "lib/mondrian/jars/commons-pool-1.2.jar",
37
- "lib/mondrian/jars/commons-vfs-1.0.jar",
38
- "lib/mondrian/jars/eigenbase-properties.jar",
39
- "lib/mondrian/jars/eigenbase-resgen.jar",
40
- "lib/mondrian/jars/eigenbase-xom.jar",
41
- "lib/mondrian/jars/javacup.jar",
42
- "lib/mondrian/jars/log4j-1.2.8.jar",
43
- "lib/mondrian/jars/log4j.properties",
44
- "lib/mondrian/jars/mondrian.jar",
45
- "lib/mondrian/jars/olap4j.jar",
46
- "lib/mondrian/olap.rb",
47
- "lib/mondrian/olap/connection.rb",
48
- "lib/mondrian/olap/cube.rb",
49
- "lib/mondrian/olap/query.rb",
50
- "lib/mondrian/olap/result.rb",
51
- "lib/mondrian/olap/schema.rb",
52
- "lib/mondrian/olap/schema_element.rb",
53
- "mondrian-olap.gemspec",
54
- "spec/connection_spec.rb",
55
- "spec/cube_spec.rb",
56
- "spec/fixtures/MondrianTest.xml",
57
- "spec/fixtures/MondrianTestOracle.xml",
58
- "spec/query_spec.rb",
59
- "spec/rake_tasks.rb",
60
- "spec/schema_definition_spec.rb",
61
- "spec/spec_helper.rb",
62
- "spec/support/matchers/be_like.rb"
63
- ]
64
- s.homepage = %q{http://github.com/rsim/mondrian-olap}
65
- s.require_paths = [%q{lib}]
66
- s.rubygems_version = %q{1.8.9}
67
- s.summary = %q{JRuby API for Mondrian OLAP Java library}
68
- s.test_files = [
69
- "spec/connection_spec.rb",
70
- "spec/cube_spec.rb",
71
- "spec/query_spec.rb",
72
- "spec/rake_tasks.rb",
73
- "spec/schema_definition_spec.rb",
74
- "spec/spec_helper.rb",
75
- "spec/support/matchers/be_like.rb"
76
- ]
77
-
78
- if s.respond_to? :specification_version then
79
- s.specification_version = 3
80
-
81
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
82
- s.add_runtime_dependency(%q<nokogiri>, ["~> 1.5.0"])
83
- s.add_development_dependency(%q<jruby-openssl>, [">= 0"])
84
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
85
- s.add_development_dependency(%q<rdoc>, [">= 0"])
86
- s.add_development_dependency(%q<rspec>, ["~> 2.5"])
87
- s.add_development_dependency(%q<autotest>, [">= 0"])
88
- s.add_development_dependency(%q<jdbc-mysql>, [">= 0"])
89
- s.add_development_dependency(%q<jdbc-postgres>, [">= 0"])
90
- s.add_development_dependency(%q<jdbc-luciddb>, [">= 0"])
91
- s.add_development_dependency(%q<jdbc-jtds>, [">= 0"])
92
- s.add_development_dependency(%q<activerecord>, ["= 3.0.10"])
93
- s.add_development_dependency(%q<activerecord-jdbc-adapter>, ["= 1.1.1"])
94
- s.add_development_dependency(%q<activerecord-oracle_enhanced-adapter>, [">= 0"])
95
- else
96
- s.add_dependency(%q<nokogiri>, ["~> 1.5.0"])
97
- s.add_dependency(%q<jruby-openssl>, [">= 0"])
98
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
99
- s.add_dependency(%q<rdoc>, [">= 0"])
100
- s.add_dependency(%q<rspec>, ["~> 2.5"])
101
- s.add_dependency(%q<autotest>, [">= 0"])
102
- s.add_dependency(%q<jdbc-mysql>, [">= 0"])
103
- s.add_dependency(%q<jdbc-postgres>, [">= 0"])
104
- s.add_dependency(%q<jdbc-luciddb>, [">= 0"])
105
- s.add_dependency(%q<jdbc-jtds>, [">= 0"])
106
- s.add_dependency(%q<activerecord>, ["= 3.0.10"])
107
- s.add_dependency(%q<activerecord-jdbc-adapter>, ["= 1.1.1"])
108
- s.add_dependency(%q<activerecord-oracle_enhanced-adapter>, [">= 0"])
109
- end
110
- else
111
- s.add_dependency(%q<nokogiri>, ["~> 1.5.0"])
112
- s.add_dependency(%q<jruby-openssl>, [">= 0"])
113
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
114
- s.add_dependency(%q<rdoc>, [">= 0"])
115
- s.add_dependency(%q<rspec>, ["~> 2.5"])
116
- s.add_dependency(%q<autotest>, [">= 0"])
117
- s.add_dependency(%q<jdbc-mysql>, [">= 0"])
118
- s.add_dependency(%q<jdbc-postgres>, [">= 0"])
119
- s.add_dependency(%q<jdbc-luciddb>, [">= 0"])
120
- s.add_dependency(%q<jdbc-jtds>, [">= 0"])
121
- s.add_dependency(%q<activerecord>, ["= 3.0.10"])
122
- s.add_dependency(%q<activerecord-jdbc-adapter>, ["= 1.1.1"])
123
- s.add_dependency(%q<activerecord-oracle_enhanced-adapter>, [">= 0"])
124
- end
125
- end
126
-