rails_sql_views 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -2
- data/README +8 -3
- data/lib/rails_sql_views.rb +1 -0
- data/lib/rails_sql_views/connection_adapters/abstract_adapter.rb +6 -1
- data/lib/rails_sql_views/connection_adapters/postgresql_adapter.rb +39 -0
- data/lib/rails_sql_views/schema_dumper.rb +6 -2
- data/lib/rails_sql_views/version.rb +1 -1
- metadata +3 -2
data/CHANGELOG
CHANGED
data/README
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
== Rails SQL Views
|
2
2
|
|
3
|
-
Library which adds SQL Views to Rails. Adds create_view and drop_view to the ActiveRecord::ConnectionAdapters::AbstractAdapter.
|
3
|
+
Library which adds SQL Views to Rails. Adds create_view and drop_view to the ActiveRecord::ConnectionAdapters::AbstractAdapter (which makes them available to migrations) and adds support for dumping views in the ActiveRecord::SchemaDumper.
|
4
4
|
|
5
5
|
== Installation
|
6
6
|
|
@@ -31,11 +31,16 @@ You can then use create_view and drop_view in your migrations. For example:
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
This extension also adds support for views in the ActiveRecord::SchemaDumper class
|
34
|
+
This extension also adds support for views in the ActiveRecord::SchemaDumper class.
|
35
|
+
|
36
|
+
The following drivers are supported:
|
37
|
+
|
38
|
+
MySQL
|
39
|
+
PostgreSQL (Native and Pure Ruby)
|
35
40
|
|
36
41
|
== Known Issues
|
37
42
|
|
38
|
-
*
|
43
|
+
* Drivers not mentioned above are not supported.
|
39
44
|
|
40
45
|
If you find any issues please send an email to anthonyeden@gmail.com .
|
41
46
|
|
data/lib/rails_sql_views.rb
CHANGED
@@ -39,6 +39,7 @@ require 'core_ext/module'
|
|
39
39
|
require 'rails_sql_views/connection_adapters/abstract/schema_definitions'
|
40
40
|
require 'rails_sql_views/connection_adapters/abstract/schema_statements'
|
41
41
|
require 'rails_sql_views/connection_adapters/mysql_adapter'
|
42
|
+
require 'rails_sql_views/connection_adapters/postgresql_adapter'
|
42
43
|
require 'rails_sql_views/schema_dumper'
|
43
44
|
|
44
45
|
class ActiveRecord::ConnectionAdapters::AbstractAdapter
|
@@ -7,9 +7,14 @@ module ActiveRecord
|
|
7
7
|
end
|
8
8
|
|
9
9
|
# Get a list of all views for the current database
|
10
|
-
def views(name = nil)
|
10
|
+
def views(name = nil)
|
11
11
|
raise NotImplementedError, "views is an abstract method"
|
12
12
|
end
|
13
|
+
|
14
|
+
# Get the select statement for the specified view
|
15
|
+
def view_select_statement(view, name=nil)
|
16
|
+
raise NotImplementedError, "view_select_statement is an abstract method"
|
17
|
+
end
|
13
18
|
end
|
14
19
|
end
|
15
20
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module ActiveRecord
|
2
|
+
module ConnectionAdapters
|
3
|
+
class PostgreSQLAdapter
|
4
|
+
# Returns true as this adapter supports views.
|
5
|
+
def supports_views?
|
6
|
+
true
|
7
|
+
end
|
8
|
+
|
9
|
+
def views(name = nil) #:nodoc:
|
10
|
+
q = <<-SQL
|
11
|
+
SELECT table_name, table_type
|
12
|
+
FROM information_schema.tables
|
13
|
+
WHERE table_schema IN (#{schemas})
|
14
|
+
AND table_type = 'VIEW'
|
15
|
+
SQL
|
16
|
+
|
17
|
+
query(q, name).map { |row| row[0] }
|
18
|
+
end
|
19
|
+
|
20
|
+
def view_select_statement(view, name = nil)
|
21
|
+
q = <<-SQL
|
22
|
+
SELECT view_definition
|
23
|
+
FROM information_schema.views
|
24
|
+
WHERE table_catalog = (SELECT catalog_name FROM information_schema.information_schema_catalog_name)
|
25
|
+
AND table_schema IN (#{schemas})
|
26
|
+
AND table_name = '#{view}'
|
27
|
+
SQL
|
28
|
+
|
29
|
+
select_value(q, name) or raise "No view called #{view} found"
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def schemas
|
35
|
+
schema_search_path.split(/,/).map { |p| quote(p) }.join(',')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -15,8 +15,12 @@ module ActiveRecord
|
|
15
15
|
# Add views to the end of the dump stream
|
16
16
|
def dump_with_views(stream)
|
17
17
|
dump_without_views(stream)
|
18
|
-
|
19
|
-
|
18
|
+
begin
|
19
|
+
if @connection.supports_views?
|
20
|
+
views(stream)
|
21
|
+
end
|
22
|
+
rescue => e
|
23
|
+
ActiveRecord::Base.logger.error "Unable to dump views: #{e}"
|
20
24
|
end
|
21
25
|
trailer_without_views(stream)
|
22
26
|
stream
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rails_sql_views
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2006-12-
|
6
|
+
version: 0.5.0
|
7
|
+
date: 2006-12-29 00:00:00 -05:00
|
8
8
|
summary: Adds SQL Views to Rails.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -42,6 +42,7 @@ files:
|
|
42
42
|
- lib/rails_sql_views/connection_adapters/abstract
|
43
43
|
- lib/rails_sql_views/connection_adapters/abstract_adapter.rb
|
44
44
|
- lib/rails_sql_views/connection_adapters/mysql_adapter.rb
|
45
|
+
- lib/rails_sql_views/connection_adapters/postgresql_adapter.rb
|
45
46
|
- lib/rails_sql_views/connection_adapters/abstract/schema_definitions.rb
|
46
47
|
- lib/rails_sql_views/connection_adapters/abstract/schema_statements.rb
|
47
48
|
test_files: []
|