Class: Birt::Core::Mysql

Inherits:
Object
  • Object
show all
Defined in:
lib/birt/core/mysql.rb

Class Method Summary collapse

Class Method Details

.choose_data_source(data_source = nil) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/birt/core/mysql.rb', line 36

def self.choose_data_source(data_source = nil)
  return rails_data_source if data_source.nil?
  config_path = Rails.root ? File.join(Rails.root, "config", "birt.yml") : './config/birt.yml'
  config = nil
  if (File.exist?(config_path))
    config = YAML.load(ERB.new(File.new(config_path).read).result)
    config = config[Rails.env] if defined? Rails
  end
  if config && "rptdesign" == config["datasource"]
    data_source
  else
    rails_data_source
  end
end

.client(data_source = nil) ⇒ Object



3
4
5
# File 'lib/birt/core/mysql.rb', line 3

def self.client(data_source = nil)
  create_client(choose_data_source(data_source))
end

.create_client(data_source) ⇒ Object



13
14
15
16
17
18
19
20
21
# File 'lib/birt/core/mysql.rb', line 13

def self.create_client(data_source)
  Mysql2::Client.new(
      host: data_source.host,
      port: data_source.port,
      username: data_source.username,
      password: data_source.password,
      database: data_source.database
  )
end

.query(data_source, query_text) {|results| ... } ⇒ Object

Yields:

  • (results)


7
8
9
10
11
12
# File 'lib/birt/core/mysql.rb', line 7

def self.query(data_source, query_text)
  client = client(data_source)
  results = client.query(query_text)
  yield(results) if block_given?
  results
end

.rails_data_sourceObject



22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/birt/core/mysql.rb', line 22

def self.rails_data_source
  config_path = Rails.root ? File.join(Rails.root, "config", "database.yml") : './config/database.yml'
  database_yml = File.open(config_path)
  dbconfig = YAML::load(database_yml)
  dbconfig = dbconfig[Rails.env] if defined? Rails
  data_source = Birt::Core::DataSource.new do |item|
    item.set_host dbconfig['host']
    item.port = dbconfig['port'] ||= 3306
    item.username = dbconfig['username']
    item.password = dbconfig['password']
    item.database = dbconfig['database']
  end
  data_source
end