redhillonrails_core 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.rvmrc +1 -0
- data/Gemfile +20 -0
- data/Gemfile.lock +50 -0
- data/README.rdoc +10 -1
- data/Rakefile +27 -4
- data/VERSION +1 -1
- data/examples/example_helper.rb +44 -0
- data/examples/postgresql_index_parser_example.rb +198 -0
- data/lib/red_hill_consulting/core/active_record/base.rb +1 -1
- data/lib/red_hill_consulting/core/active_record/connection_adapters/abstract_adapter.rb +5 -1
- data/lib/red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter.rb +13 -8
- data/lib/redhillonrails_core.rb +1 -1
- metadata +127 -13
- data/.gitignore +0 -21
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.8.7@redhillonrails_core
|
data/Gemfile
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
source :rubygems
|
2
|
+
|
3
|
+
gem "pg"
|
4
|
+
gem "activerecord", "< 3.0.0"
|
5
|
+
gem "rake"
|
6
|
+
|
7
|
+
group :development, :test do
|
8
|
+
gem "jeweler"
|
9
|
+
gem "micronaut"
|
10
|
+
|
11
|
+
platforms :ruby_18 do
|
12
|
+
gem "ruby-debug"
|
13
|
+
end
|
14
|
+
|
15
|
+
platforms :ruby_19 do
|
16
|
+
gem "ruby-debug19"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# vim: ft=ruby
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
activerecord (2.3.10)
|
5
|
+
activesupport (= 2.3.10)
|
6
|
+
activesupport (2.3.10)
|
7
|
+
archive-tar-minitar (0.5.2)
|
8
|
+
columnize (0.3.1)
|
9
|
+
gemcutter (0.6.1)
|
10
|
+
git (1.2.5)
|
11
|
+
jeweler (1.4.0)
|
12
|
+
gemcutter (>= 0.1.0)
|
13
|
+
git (>= 1.2.5)
|
14
|
+
rubyforge (>= 2.0.0)
|
15
|
+
json_pure (1.4.6)
|
16
|
+
linecache (0.43)
|
17
|
+
linecache19 (0.5.11)
|
18
|
+
ruby_core_source (>= 0.1.4)
|
19
|
+
micronaut (0.3.0)
|
20
|
+
pg (0.9.0)
|
21
|
+
rake (0.8.7)
|
22
|
+
ruby-debug (0.10.3)
|
23
|
+
columnize (>= 0.1)
|
24
|
+
ruby-debug-base (~> 0.10.3.0)
|
25
|
+
ruby-debug-base (0.10.3)
|
26
|
+
linecache (>= 0.3)
|
27
|
+
ruby-debug-base19 (0.11.24)
|
28
|
+
columnize (>= 0.3.1)
|
29
|
+
linecache19 (>= 0.5.11)
|
30
|
+
ruby_core_source (>= 0.1.4)
|
31
|
+
ruby-debug19 (0.11.6)
|
32
|
+
columnize (>= 0.3.1)
|
33
|
+
linecache19 (>= 0.5.11)
|
34
|
+
ruby-debug-base19 (>= 0.11.19)
|
35
|
+
ruby_core_source (0.1.4)
|
36
|
+
archive-tar-minitar (>= 0.5.2)
|
37
|
+
rubyforge (2.0.4)
|
38
|
+
json_pure (>= 1.1.7)
|
39
|
+
|
40
|
+
PLATFORMS
|
41
|
+
ruby
|
42
|
+
|
43
|
+
DEPENDENCIES
|
44
|
+
activerecord (< 3.0.0)
|
45
|
+
jeweler
|
46
|
+
micronaut
|
47
|
+
pg
|
48
|
+
rake
|
49
|
+
ruby-debug
|
50
|
+
ruby-debug19
|
data/README.rdoc
CHANGED
@@ -142,7 +142,7 @@ Partial indexes index only a portion of the database. Only PostgreSQL supports t
|
|
142
142
|
|
143
143
|
Create expression-based indexes:
|
144
144
|
|
145
|
-
add_index :users, [:first_name, :last_name], :expression => 'LOWER(first_name || last_name)'
|
145
|
+
add_index :users, [:first_name, :last_name], :expression => 'LOWER(first_name || ' ' || last_name)'
|
146
146
|
add_index :places, :expression => 'sin(lat) * cos(lng)', :name => 'index_places_on_something'
|
147
147
|
add_index :documents, :body, :expression => "USING gin (to_tsvector('english', body))"
|
148
148
|
|
@@ -172,6 +172,15 @@ The plugin also adds a method--<code>defining?()</code>--to
|
|
172
172
|
<code>ActiveRecord::Schema</code> to indicate when <code>define()</code> is running. This is necessary
|
173
173
|
as some migration plugins must change their behaviour accordingly.
|
174
174
|
|
175
|
+
=== Examples
|
176
|
+
|
177
|
+
redhillonrails_core uses Micronaut for specing. The examples are split per-database adapter. Run using Bundler:
|
178
|
+
|
179
|
+
$ bundle install
|
180
|
+
$ bundle exec rake postgresql:examples
|
181
|
+
|
182
|
+
Running examples only will fail since the environment won't be setup properly.
|
183
|
+
|
175
184
|
=== Contributors
|
176
185
|
|
177
186
|
* François Beausoleil - http://github.com/francois
|
data/Rakefile
CHANGED
@@ -12,6 +12,10 @@ begin
|
|
12
12
|
gem.homepage = "http://github.com/mlomnicki/redhillonrails_core"
|
13
13
|
gem.authors = ["Michał Łomnicki"]
|
14
14
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
|
+
|
16
|
+
gem.add_dependency "activerecord", "< 3.0.0"
|
17
|
+
|
18
|
+
gem.add_development_dependency "micronaut"
|
15
19
|
end
|
16
20
|
Jeweler::GemcutterTasks.new
|
17
21
|
rescue LoadError
|
@@ -38,10 +42,6 @@ rescue LoadError
|
|
38
42
|
end
|
39
43
|
end
|
40
44
|
|
41
|
-
task :test => :check_dependencies
|
42
|
-
|
43
|
-
task :default => :test
|
44
|
-
|
45
45
|
require 'rake/rdoctask'
|
46
46
|
Rake::RDocTask.new do |rdoc|
|
47
47
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
@@ -51,3 +51,26 @@ Rake::RDocTask.new do |rdoc|
|
|
51
51
|
rdoc.rdoc_files.include('README*')
|
52
52
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
53
53
|
end
|
54
|
+
|
55
|
+
require "micronaut/rake_task"
|
56
|
+
Micronaut::RakeTask.new(:examples) do |examples|
|
57
|
+
examples.pattern = "examples/**/*_example.rb"
|
58
|
+
examples.ruby_opts << "-Ilib -Iexamples"
|
59
|
+
end
|
60
|
+
|
61
|
+
Micronaut::RakeTask.new(:rcov) do |examples|
|
62
|
+
examples.pattern = "examples/**/*_example.rb"
|
63
|
+
examples.rcov_opts = "-Ilib -Iexamples"
|
64
|
+
examples.rcov = true
|
65
|
+
end
|
66
|
+
|
67
|
+
task :examples => :check_dependencies
|
68
|
+
|
69
|
+
task :default => :examples
|
70
|
+
|
71
|
+
namespace :postgresql do
|
72
|
+
task :examples do
|
73
|
+
ENV["ADAPTER"] = "postgresql"
|
74
|
+
Rake::Task["examples"].invoke
|
75
|
+
end
|
76
|
+
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.9
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require "micronaut"
|
2
|
+
require "active_record"
|
3
|
+
require "redhillonrails_core"
|
4
|
+
require "fileutils"
|
5
|
+
|
6
|
+
begin
|
7
|
+
require "ruby-debug"
|
8
|
+
rescue LoadError
|
9
|
+
# Don't care - debugging won't be available
|
10
|
+
end
|
11
|
+
|
12
|
+
# Log data somewhere interesting
|
13
|
+
FileUtils.mkdir_p("log") rescue nil
|
14
|
+
ActiveRecord::Base.logger = Logger.new("log/test.log")
|
15
|
+
|
16
|
+
# The model we'll be playing along with. Nothing ActiveRecord-like is expected or required here.
|
17
|
+
class User < ActiveRecord::Base
|
18
|
+
end
|
19
|
+
|
20
|
+
# We drop and reload the schema on all specs, to make it easier to know what'll be in the DB
|
21
|
+
case ENV["ADAPTER"]
|
22
|
+
when "postgresql"
|
23
|
+
ActiveRecord::Base.establish_connection :adapter => "postgresql", :database => "redhillonrails_core_test", :min_messages => "warning"
|
24
|
+
else
|
25
|
+
raise ArgumentError, "ADAPTER environment variable left unset: run tests and set ADAPTER to a known value. Valid values are: postgresql"
|
26
|
+
end
|
27
|
+
|
28
|
+
Micronaut.configure do |c|
|
29
|
+
c.before :each do
|
30
|
+
@migrator.suppress_messages do
|
31
|
+
@migrator.up
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
c.before :each do
|
36
|
+
User.reset_column_information
|
37
|
+
end
|
38
|
+
|
39
|
+
c.after :each do
|
40
|
+
@migrator.suppress_messages do
|
41
|
+
@migrator.down
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,198 @@
|
|
1
|
+
require "example_helper"
|
2
|
+
require "red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter"
|
3
|
+
|
4
|
+
describe RedHillConsulting::Core::ActiveRecord::ConnectionAdapters::PostgresqlAdapter, "simple indexes" do
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
@migrator = Class.new(ActiveRecord::Migration) do
|
8
|
+
def self.up
|
9
|
+
create_table :users do |t|
|
10
|
+
t.string :username
|
11
|
+
end
|
12
|
+
|
13
|
+
add_index :users, :username
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.down
|
17
|
+
drop_table :users
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
it "should parse the index and return appropriate information" do
|
23
|
+
indexes = User.indexes
|
24
|
+
indexes.length.should == 1
|
25
|
+
|
26
|
+
index = indexes.first
|
27
|
+
index.name.should == "index_users_on_username"
|
28
|
+
index.columns.should == ["username"]
|
29
|
+
index.unique.should == false
|
30
|
+
index.should be_case_sensitive
|
31
|
+
index.expression.should be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
describe RedHillConsulting::Core::ActiveRecord::ConnectionAdapters::PostgresqlAdapter, "unique indexes" do
|
37
|
+
|
38
|
+
before :all do
|
39
|
+
@migrator = Class.new(ActiveRecord::Migration) do
|
40
|
+
def self.up
|
41
|
+
create_table :users do |t|
|
42
|
+
t.string :username
|
43
|
+
end
|
44
|
+
|
45
|
+
add_index :users, :username, :unique => true, :case_sensitive => true
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.down
|
49
|
+
drop_table :users
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should parse the index and return appropriate information" do
|
55
|
+
indexes = User.indexes
|
56
|
+
indexes.length.should == 1
|
57
|
+
|
58
|
+
index = indexes.first
|
59
|
+
index.name.should == "index_users_on_username"
|
60
|
+
index.columns.should == ["username"]
|
61
|
+
index.unique.should == true
|
62
|
+
index.should be_case_sensitive
|
63
|
+
index.expression.should be_nil
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
describe RedHillConsulting::Core::ActiveRecord::ConnectionAdapters::PostgresqlAdapter, "case-insensitive indexes" do
|
69
|
+
|
70
|
+
before :all do
|
71
|
+
@migrator = Class.new(ActiveRecord::Migration) do
|
72
|
+
def self.up
|
73
|
+
create_table :users do |t|
|
74
|
+
t.string :username
|
75
|
+
end
|
76
|
+
|
77
|
+
add_index :users, :username, :case_sensitive => false
|
78
|
+
end
|
79
|
+
|
80
|
+
def self.down
|
81
|
+
drop_table :users
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should parse the index and return appropriate information" do
|
87
|
+
indexes = User.indexes
|
88
|
+
indexes.length.should == 1
|
89
|
+
|
90
|
+
index = indexes.first
|
91
|
+
index.name.should == "index_users_on_username"
|
92
|
+
index.columns.should == ["username"]
|
93
|
+
index.unique.should == false
|
94
|
+
index.should_not be_case_sensitive
|
95
|
+
index.expression.should be_nil
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
describe RedHillConsulting::Core::ActiveRecord::ConnectionAdapters::PostgresqlAdapter, "partial indexes" do
|
101
|
+
|
102
|
+
before :all do
|
103
|
+
@migrator = Class.new(ActiveRecord::Migration) do
|
104
|
+
def self.up
|
105
|
+
create_table :users do |t|
|
106
|
+
t.string :username, :state
|
107
|
+
end
|
108
|
+
|
109
|
+
add_index :users, :username, :unique => true, :name => "index_users_on_active_usernames", :conditions => {:state => "active"}
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.down
|
113
|
+
drop_table :users
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
it "should parse conditional index and report conditions" do
|
119
|
+
indexes = User.indexes
|
120
|
+
indexes.length.should == 1
|
121
|
+
|
122
|
+
index = indexes.first
|
123
|
+
index.should be_case_sensitive
|
124
|
+
index.columns.should == ["username"]
|
125
|
+
|
126
|
+
# FIXME: This is subject to change depending on the PostgreSQL version
|
127
|
+
index.conditions.should == "state::text = 'active'::text"
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
describe RedHillConsulting::Core::ActiveRecord::ConnectionAdapters::PostgresqlAdapter, "expression indexes" do
|
133
|
+
|
134
|
+
before :all do
|
135
|
+
@migrator = Class.new(ActiveRecord::Migration) do
|
136
|
+
def self.up
|
137
|
+
create_table :users do |t|
|
138
|
+
t.string :username, :state
|
139
|
+
end
|
140
|
+
|
141
|
+
add_index :users, :expression => "USING gin (to_tsvector('english', username))", :name => "index_users_full_text"
|
142
|
+
end
|
143
|
+
|
144
|
+
def self.down
|
145
|
+
drop_table :users
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
it "should parse conditional index and report conditions" do
|
151
|
+
indexes = User.indexes
|
152
|
+
indexes.length.should == 1
|
153
|
+
|
154
|
+
index = indexes.first
|
155
|
+
index.unique.should == false
|
156
|
+
index.should be_case_sensitive
|
157
|
+
index.columns.should be_nil
|
158
|
+
|
159
|
+
# FIXME: This is subject to change depending on the PostgreSQL version
|
160
|
+
index.conditions.should be_nil
|
161
|
+
index.expression.should == "gin (to_tsvector('english'::regconfig, username::text))"
|
162
|
+
end
|
163
|
+
|
164
|
+
end
|
165
|
+
|
166
|
+
describe RedHillConsulting::Core::ActiveRecord::ConnectionAdapters::PostgresqlAdapter, "case insensitive + partial index" do
|
167
|
+
|
168
|
+
before :all do
|
169
|
+
@migrator = Class.new(ActiveRecord::Migration) do
|
170
|
+
def self.up
|
171
|
+
create_table :users do |t|
|
172
|
+
t.string :username, :state
|
173
|
+
end
|
174
|
+
|
175
|
+
add_index :users, :username, :unique => true, :case_sensitive => false, :conditions => {:state => %w(active suspended invited)}
|
176
|
+
end
|
177
|
+
|
178
|
+
def self.down
|
179
|
+
drop_table :users
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
it "should parse as an expression index" do
|
185
|
+
indexes = User.indexes
|
186
|
+
indexes.length.should == 1
|
187
|
+
|
188
|
+
index = indexes.first
|
189
|
+
index.unique.should == false # We don't attempt to determine if this is true/false when it's an expression index
|
190
|
+
index.should be_case_sensitive # Same here: return the default value - expression trumps all other values
|
191
|
+
index.columns.should be_nil # And we know the columns aren't specified when it's an expression
|
192
|
+
|
193
|
+
# FIXME: This is subject to change depending on the PostgreSQL version
|
194
|
+
index.conditions.should be_nil
|
195
|
+
index.expression.should == "btree (lower(username::text)) WHERE state::text = ANY (ARRAY['active'::character varying, 'suspended'::character varying, 'invited'::character varying]::text[])"
|
196
|
+
end
|
197
|
+
|
198
|
+
end
|
@@ -26,7 +26,7 @@ module RedHillConsulting::Core::ActiveRecord
|
|
26
26
|
columns_without_redhillonrails_core
|
27
27
|
cols = columns_hash
|
28
28
|
indexes.each do |index|
|
29
|
-
next if index.columns.
|
29
|
+
next if index.columns.blank?
|
30
30
|
column_name = index.columns.reverse.detect { |name| name !~ /_id$/ } || index.columns.last
|
31
31
|
column = cols[column_name]
|
32
32
|
column.case_sensitive = index.case_sensitive?
|
@@ -9,7 +9,11 @@ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
|
|
9
9
|
initialize_without_redhillonrails_core(*args)
|
10
10
|
adapter = nil
|
11
11
|
case adapter_name
|
12
|
-
|
12
|
+
# name of MySQL adapter depends on mysql gem
|
13
|
+
# * with mysql gem adapter is named MySQL
|
14
|
+
# * with mysql2 gem adapter is named Mysql2
|
15
|
+
# Here we handle this and hopefully futher adapter names
|
16
|
+
when /^MySQL/i
|
13
17
|
adapter = 'MysqlAdapter'
|
14
18
|
when 'PostgreSQL'
|
15
19
|
adapter = 'PostgresqlAdapter'
|
@@ -65,7 +65,18 @@ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
|
|
65
65
|
result.each do |(index_name, unique, index_def)|
|
66
66
|
case_sensitive_match = INDEX_CASE_INSENSITIVE_REGEX.match(index_def)
|
67
67
|
partial_index_match = INDEX_PARTIAL_REGEX.match(index_def)
|
68
|
-
if
|
68
|
+
if non_btree_match = INDEX_NON_BTREE_REGEX.match(index_def) || (case_sensitive_match && partial_index_match) then
|
69
|
+
# If we have both types of indexes simultaneously, we don't try to parse it all: simply assume it's an expression index
|
70
|
+
indexes.delete_if { |index| index.name == index_name } # prevent duplicated indexes
|
71
|
+
|
72
|
+
index = ActiveRecord::ConnectionAdapters::IndexDefinition.new(table_name, index_name, false, nil)
|
73
|
+
index.expression = if case_sensitive_match then
|
74
|
+
index_def.split(/using/i, 2).last.strip
|
75
|
+
else
|
76
|
+
non_btree_match[1]
|
77
|
+
end
|
78
|
+
indexes << index
|
79
|
+
elsif case_sensitive_match || partial_index_match then
|
69
80
|
# column_definitions may be ie. 'LOWER(lower)' or 'login, deleted_at' or LOWER(login), deleted_at
|
70
81
|
column_definitions = case_sensitive_match ? case_sensitive_match[1] : partial_index_match[1]
|
71
82
|
|
@@ -73,17 +84,11 @@ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
|
|
73
84
|
column_names = determine_index_column_names(column_definitions)
|
74
85
|
|
75
86
|
index = ActiveRecord::ConnectionAdapters::IndexDefinition.new(table_name, index_name, unique == "t", column_names)
|
76
|
-
index.case_sensitive =
|
87
|
+
index.case_sensitive = !case_sensitive_match
|
77
88
|
# conditions may be ie. active = true AND deleted_at IS NULL.
|
78
89
|
index.conditions = partial_index_match[2] if partial_index_match
|
79
90
|
indexes << index
|
80
91
|
|
81
|
-
elsif non_btree_match = INDEX_NON_BTREE_REGEX.match(index_def) then
|
82
|
-
indexes.delete_if { |index| index.name == index_name } # prevent duplicated indexes
|
83
|
-
|
84
|
-
index = ActiveRecord::ConnectionAdapters::IndexDefinition.new(table_name, index_name, false, [])
|
85
|
-
index.expression = non_btree_match[1]
|
86
|
-
indexes << index
|
87
92
|
end
|
88
93
|
end
|
89
94
|
|
data/lib/redhillonrails_core.rb
CHANGED
@@ -24,7 +24,7 @@ module RedHillConsulting::Core::ActiveRecord::ConnectionAdapters
|
|
24
24
|
autoload :Mysql4Adapter, 'red_hill_consulting/core/active_record/connection_adapters/mysql4_adapter'
|
25
25
|
autoload :Mysql5Adapter, 'red_hill_consulting/core/active_record/connection_adapters/mysql5_adapter'
|
26
26
|
autoload :PostgresqlAdapter, 'red_hill_consulting/core/active_record/connection_adapters/postgresql_adapter'
|
27
|
-
autoload :Sqlite3Adapter, 'red_hill_consulting/core/active_record/connection_adapters/
|
27
|
+
autoload :Sqlite3Adapter, 'red_hill_consulting/core/active_record/connection_adapters/sqlite3_adapter'
|
28
28
|
end
|
29
29
|
|
30
30
|
ActiveRecord::Base.send(:include, RedHillConsulting::Core::ActiveRecord::Base)
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 1.0.
|
8
|
+
- 9
|
9
|
+
version: 1.0.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- "Micha\xC5\x82 \xC5\x81omnicki"
|
@@ -14,10 +14,121 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-12-11 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
|
-
dependencies:
|
20
|
-
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
segments:
|
26
|
+
- 0
|
27
|
+
version: "0"
|
28
|
+
requirement: *id001
|
29
|
+
prerelease: false
|
30
|
+
type: :runtime
|
31
|
+
name: pg
|
32
|
+
- !ruby/object:Gem::Dependency
|
33
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - <
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
segments:
|
38
|
+
- 3
|
39
|
+
- 0
|
40
|
+
- 0
|
41
|
+
version: 3.0.0
|
42
|
+
requirement: *id002
|
43
|
+
prerelease: false
|
44
|
+
type: :runtime
|
45
|
+
name: activerecord
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
segments:
|
52
|
+
- 0
|
53
|
+
version: "0"
|
54
|
+
requirement: *id003
|
55
|
+
prerelease: false
|
56
|
+
type: :runtime
|
57
|
+
name: rake
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
segments:
|
64
|
+
- 0
|
65
|
+
version: "0"
|
66
|
+
requirement: *id004
|
67
|
+
prerelease: false
|
68
|
+
type: :development
|
69
|
+
name: jeweler
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
segments:
|
76
|
+
- 0
|
77
|
+
version: "0"
|
78
|
+
requirement: *id005
|
79
|
+
prerelease: false
|
80
|
+
type: :development
|
81
|
+
name: micronaut
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
requirement: *id006
|
91
|
+
prerelease: false
|
92
|
+
type: :development
|
93
|
+
name: ruby-debug
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
segments:
|
100
|
+
- 0
|
101
|
+
version: "0"
|
102
|
+
requirement: *id007
|
103
|
+
prerelease: false
|
104
|
+
type: :development
|
105
|
+
name: ruby-debug19
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - <
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
segments:
|
112
|
+
- 3
|
113
|
+
- 0
|
114
|
+
- 0
|
115
|
+
version: 3.0.0
|
116
|
+
requirement: *id008
|
117
|
+
prerelease: false
|
118
|
+
type: :runtime
|
119
|
+
name: activerecord
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
segments:
|
126
|
+
- 0
|
127
|
+
version: "0"
|
128
|
+
requirement: *id009
|
129
|
+
prerelease: false
|
130
|
+
type: :development
|
131
|
+
name: micronaut
|
21
132
|
description: RedHill on Rails Core is a plugin that features to support other RedHill on Rails plugins. It creates and drops views and foreign-keys or obtains indexes directly from a model class.
|
22
133
|
email: michal.lomnicki@gmail.com
|
23
134
|
executables: []
|
@@ -28,12 +139,16 @@ extra_rdoc_files:
|
|
28
139
|
- README.rdoc
|
29
140
|
files:
|
30
141
|
- .document
|
31
|
-
- .
|
142
|
+
- .rvmrc
|
32
143
|
- CHANGELOG
|
144
|
+
- Gemfile
|
145
|
+
- Gemfile.lock
|
33
146
|
- MIT-LICENSE
|
34
147
|
- README.rdoc
|
35
148
|
- Rakefile
|
36
149
|
- VERSION
|
150
|
+
- examples/example_helper.rb
|
151
|
+
- examples/postgresql_index_parser_example.rb
|
37
152
|
- init.rb
|
38
153
|
- lib/red_hill_consulting/core.rb
|
39
154
|
- lib/red_hill_consulting/core/active_record.rb
|
@@ -60,12 +175,11 @@ homepage: http://github.com/mlomnicki/redhillonrails_core
|
|
60
175
|
licenses: []
|
61
176
|
|
62
177
|
post_install_message:
|
63
|
-
rdoc_options:
|
64
|
-
|
178
|
+
rdoc_options: []
|
179
|
+
|
65
180
|
require_paths:
|
66
181
|
- lib
|
67
182
|
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
-
none: false
|
69
183
|
requirements:
|
70
184
|
- - ">="
|
71
185
|
- !ruby/object:Gem::Version
|
@@ -73,7 +187,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
73
187
|
- 0
|
74
188
|
version: "0"
|
75
189
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
190
|
requirements:
|
78
191
|
- - ">="
|
79
192
|
- !ruby/object:Gem::Version
|
@@ -83,9 +196,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
196
|
requirements: []
|
84
197
|
|
85
198
|
rubyforge_project:
|
86
|
-
rubygems_version: 1.3.
|
199
|
+
rubygems_version: 1.3.6
|
87
200
|
signing_key:
|
88
201
|
specification_version: 3
|
89
202
|
summary: RedHill on Rails Core is a plugin that features to support other RedHill on Rails plugins
|
90
|
-
test_files:
|
91
|
-
|
203
|
+
test_files:
|
204
|
+
- examples/example_helper.rb
|
205
|
+
- examples/postgresql_index_parser_example.rb
|