Skip to content
This repository has been archived by the owner on May 21, 2024. It is now read-only.

fix for rails 2.3.9 #4

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions lib/rails_sql_views/connection_adapters/mysql2_adapter.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
module RailsSqlViews
module ConnectionAdapters
module Mysql2Adapter
def self.included(base)
if base.private_method_defined?(:supports_views?)
base.send(:public, :supports_views?)
end
end

# Returns true as this adapter supports views.
def supports_views?
true
end

def base_tables(name = nil) #:nodoc:
tables = []
execute("SHOW FULL TABLES WHERE TABLE_TYPE='BASE TABLE'").each{|row| tables << row[0]}
tables
end
alias nonview_tables base_tables

def views(name = nil) #:nodoc:
views = []
execute("SHOW FULL TABLES WHERE TABLE_TYPE='VIEW'").each{|row| views << row[0]}
views
end

def tables_with_views_included(name = nil)
nonview_tables(name) + views(name)
end

def structure_dump
structure = ""
base_tables.each do |table|
structure += select_one("SHOW CREATE TABLE #{quote_table_name(table)}")["Create Table"] + ";\n\n"
end

views.each do |view|
structure += select_one("SHOW CREATE VIEW #{quote_table_name(view)}")["Create View"] + ";\n\n"
end

return structure
end

# Get the view select statement for the specified table.
def view_select_statement(view, name=nil)
begin
row = execute("SHOW CREATE VIEW #{view}", name).each do |row|
return convert_statement(row[1]) if row[0] == view
end
rescue ActiveRecord::StatementInvalid => e
raise "No view called #{view} found"
end
end

private
def convert_statement(s)
s.gsub!(/.* AS (select .*)/, '\1')
end
end
end
end
2 changes: 1 addition & 1 deletion lib/rails_sql_views/loader.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@

module RailsSqlViews
module Loader
SUPPORTED_ADAPTERS = %w( Mysql PostgreSQL SQLServer SQLite OracleEnhanced )
SUPPORTED_ADAPTERS = %w( Mysql Mysql2 PostgreSQL SQLServer SQLite OracleEnhanced )

def self.load_extensions
SUPPORTED_ADAPTERS.each do |db|
Expand Down